0

私はAndroid2.3.3を使用しています。、、mainArrayList<String>およびのsubArrayList<String>一部であるコンテンツを含むがありmainArrayList<String>ます。subArrayList<String>これをから削除したいと思いmainArrayList<String>ます。

どうすればいいのですか?

使ってみalMainArrayList.remove(alSubArrayList)ました。しかし、それは機能しません。誰かが私を助けることができますか?

元:

alMainArrayList<String> = [1,+,(,2,*,(,3,+,4,),),)]
alSubArrayList<String> = [(,3,+,4,)]

詳細については、電卓アプリを開発しています。ここでは、で指定された式を使用していArrayList<String> alMainArrayListます。サブ式の評価を実行した後、それをalMainArrayListから削除し、結果を指定されたインデックスに挿入したいと思います。コードは準拠しています。

問題は、alSubArrayListにある部分式が、alMainArrayList.remove(alSubArrayList)またはを使用しても削除されないことalMainArrayList.removeAll(alSubArrayList)です。

これはループであるため、結果は指定されたインデックスに追加され(最初にsubArrayListを削除せずに)、ループは無限ループに入ります。

コードスニペットを提供するのは少し難しいです。それらはあちこちで断片です。だから、誰かが私が言いたいことを理解したなら、私を助けてください。

4

2 に答える 2

1

指定したコードは、Javaにリストへの参照をから削除するように指示しますalMainArrayList。が実際にまたはalMainArrayListとして宣言されている場合、これはコンパイルすらすべきではありません。sへの参照が含まれていないため、明らかに変更されません。List<String>ArrayList<StringListList

そうは言っても、removeAll()をチェックする必要があります。私はこれがあなたが望むことをするだろうと信じています。

于 2012-12-14T03:15:26.397 に答える
1

ArrayListのメソッドsubList()を見つけました。

これは、メソッドに配置したときのヘルプごとの情報です。

subList()::::ArrayListの場合

このリストの連続する要素の一部をビューとして返します。startがendと等しい場合、返されるビューの長さはゼロになります。返されたサブリストで発生した変更はすべて元のリストに反映され、その逆も同様です。元のリストでサポートされているすべてのオプション操作は、このサブリストでもサポートされます。

このメソッドは、元のリストのサブ範囲でいくつかの操作を実行するための便利なメソッドとして使用できます。たとえば、list.subList(from、to).clear();

元のリストが返されたサブリスト以外の方法で変更された場合、返されたサブリストの動作は未定義になります。

返されるsubListは、AbstractListのサブクラスです。サブクラスには、元のリストのオフセット、サイズ、およびmodCountが格納されます。元のリストがRandomAccessインターフェースを実装している場合、返されるsubListはRandomAccessインターフェースも実装します。

subListのset(int、Object)、get(int)、add(int、Object)、remove(int)、addAll(int、Collection)、およびremoveRange(int、int)メソッドは、最初に境界をチェックし、オフセットを調整してから呼び出します。元のAbstractListの対応するメソッド。返されたsubListのaddAll(Collection c)メソッドは、元のaddAll(offset + size、c)を呼び出します。

subListのlistIterator(int)メソッドは、元のリストイテレータをラップします。subListのiterator()メソッドは元のlistIterator()メソッドを呼び出し、size()メソッドは単にsubListのサイズを返します。

元のリストのmodCountが期待値と等しくない場合、すべてのメソッドはConcurrentModificationExceptionをスローします。

パラメータは、サブリストの開始インデックスを開始します(両端を含む)。subListのendendインデックス(排他的)。

このリストのサブリストビューを開始(包括的)で開始し、終了(排他的)で終了しますThrows IndexOutOfBoundsException if(start <0 || end> size())IllegalArgumentException if(start> end)

于 2012-12-16T06:38:10.490 に答える