1

arraylist を作成し、これに複数の arraylist を追加するという問題があります。プログラムのある時点で、これらのリストを 1 つの中央リストから削除する必要があります。removeAll(); を使用しています。ただし、これにより、1 つの要素のすべてのインスタンスが削除されます。たとえば、arraylist には (1,2,3,4,5) を含めることができ、リスト (1,2,3) を追加することができます。ただし、このリストを削除すると、結果のリストには (4,5) が含まれるようになりますが、(1,2,3,4,5) を含むことが望ましいです。それはどのように達成できますか。助けてくれてありがとう。

4

1 に答える 1

1

removeの代わりに使用する必要があるように聞こえますremoveAll。これをループに入れて、コレクションからすべての要素を削除できます。

ArrayList<Integer> bigList = new ArrayList<Integer>();

// Put multiple smaller lists into big list
bigList.addAll(list1);
bigList.addAll(list2);
bigList.addAll(list3);

// Remove list2's elements from bigList
for (Integer i : list2) {
  bigList.remove(i);
}

アップデート:

実行可能なバージョン:

import java.util.*;

public class RemoveTest {
  public static void main(String[] args) {
    List<Integer> list1 = Arrays.asList(1, 2, 3);
    List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5);
    List<Integer> list3 = Arrays.asList(9);

    ArrayList<Integer> bigList = new ArrayList<Integer>();

    // Put multiple smaller lists into big list
    bigList.addAll(list1);
    bigList.addAll(list2);
    bigList.addAll(list3);

    // Remove list2's elements from bigList
    for (Integer i : list2) {
      bigList.remove(i);
    }

    System.out.println(bigList);
    // Result:
    // [1, 2, 3, 9]
  }
}
于 2013-03-20T02:34:57.030 に答える