删除方法,我们曾经使用过一次删除,但是我想删除数组List中的多个值。
ArrayList<Integer> al=new ArrayList<Integer>();
al.add(7);
al.add(8);
al.add(9);
al.add(13);
al.add(22);
al.add(55);
al.add(88);
//adding values
for(int i=0;i<100;i++){
al.add(i);
}
我添加了重复元素,我想获取重复元素并将其从arraylist中删除
例如:
输出如:1、2、3、4、5、6、10、11、12、14、15、16、17、18、19、20、21、23、24、25、26、27, 28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、46、47、48、49、50、51、52, 53,54,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78, 79,80,81,82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100
答案 0 :(得分:2)
使用两个ArrayList
,其中一个用于删除并使用removeAll method:
从此列表中删除指定集合中包含的所有元素。
ArrayList<Integer> toRemove=new ArrayList<>();//use diamond operator to reduce verbosity
toRemove.add(7);
toRemove.add(8);
toRemove.add(9);
toRemove.add(13);
toRemove.add(22);
toRemove.add(55);
toRemove.add(88);
ArrayList<Integer> al=new ArrayList<>();
for(int i=0;i<100;i++){
al.add(i);
}
al.removeAll(toRemove);
答案 1 :(得分:1)
ArrayList<Integer> withoutDuplicates = new ArrayList<>(new HashSet<>(al));
不会影响重复的原始列表,这似乎是您要的。如果您不关心用于第二个集合的结构,则可以将其保留为Set,而无需创建另一个ArrayList。
答案 2 :(得分:1)
ArrayList<Integer> al=new ArrayList<Integer>();
ArrayList<Integer> remove=new ArrayList<Integer>();
al.add(7);
al.add(8);
al.add(9);
al.add(13);
al.add(22);
al.add(55);
al.add(88);
remove.add(7);
remove.add(8);
remove.add(9);
remove.add(13);
remove.add(22);
remove.add(55);
remove.add(88);
//adding values
for(int i=0;i<100;i++){
al.add(i);
}
al.removeAll(remove);
System.out.println(al);
答案 3 :(得分:0)
利用流获得独特的价值。但是我仍然相信Set非常适合这种情况。
ArrayList<Integer> al=new ArrayList<Integer>();
al.add(7);
al.add(8);
al.add(9);
al.add(13);
al.add(22);
al.add(55);
al.add(88);
List<Integer> list = al.stream().distinct().collect(Collectors.toList());
System.out.println(list);