6

Java で subList を作成し、subList にある値を前の List から削除したいと考えています。私のプログラムは subList を正しく作成しますが、previousList から正しい値を削除しません。

私のコード:

for(int i=0; i<4; i++){
     List<Object> sub=new ArrayList<Object>(prevoiusList.subList(0,6));

     for (int j=0; j<6; j++){
         previousList.remove(j);
     }
}    
4

4 に答える 4

10

最初j=0に、最初の要素を削除します。そうするとき、他のすべての要素をシフトするので、2 番目の要素が最初になります。

次の反復j=1では、もともと 3 番目だった 2 番目の要素を削除します...

この問題を解決するには、0インデックスのみを使用するか、反復子を使用します。

于 2013-05-19T11:36:29.567 に答える
1

1 つのリストから 6 つの要素を「移動」して別のリストを作成するには:

List<Object> list;
List<Object> subList = new ArrayList<Object>(list.subList(0, 6));
list.removeAll(subList);

はリストのビューList.subList()を返すため、元のリストへの変更はサブリストに反映されるため、新しいリストが作成され、サブリストがコンストラクターに渡されることに注意してください。

これをループに入れるには:

List<Object> list;
while (list.size() > 5) {
    List<Object> subList = new ArrayList<Object>(list.subList(0, 6));
    list.removeAll(subList);
    // do something with subList
}
// list now has 0-5 elements
于 2013-05-19T12:06:55.027 に答える