如何删除arrayList中的多个值?

时间:2018-10-16 08:52:32

标签: java arraylist collections removeall

删除方法,我们曾经使用过一次删除,但是我想删除数组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

4 个答案:

答案 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);