Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题
Posted 给你讲个笑话吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题相关的知识,希望对你有一定的参考价值。
该问题有两种方法:
一
利用两个数组,此法简单,不讨论
二
利用一个数组,从第0个开始依次取元素,并在其后元素中查找是否有该元素,有则删掉后面的重复元素,依次遍历。---但是这种情况要特别注意,当后续元素中有连续的重复元素时,如不加上y--使y(待比较的后续元素)回退一个,很可能会因为我们删掉当前重复元素y后其后的连续重复元素顶上,导致忽略掉顶上的重复元素。
代码如下:
1 public static void main(String[] args) { 2 ArrayList array=new ArrayList(); 3 array.add("hello"); 4 array.add("world"); 5 array.add("java"); 6 array.add("hello"); 7 array.add("java"); 8 array.add("world"); 9 array.add("world"); 10 array.add("world"); 11 array.add("java"); 12 System.out.println("array:"+array); 13 for(int i=0;i<array.size();i++){ 14 for(int j=i+1;j<array.size();j++){ 15 if(array.get(i)==array.get(j)){ 16 array.remove(j); 17 } 18 } 19 } 20 System.out.println("array:"+array); 21 }
结果为:
array:[hello, world, java, hello, java, world, world, world, java]
array:[hello, world, java, world]
漏掉了一个world,因在删除连续的几个world时,删除第一个重复的world后后一个顶上了,在删除元素后,我们没有回退一下判断刚刚顶上的元素。
改进:
public static void main(String[] args) { ArrayList array=new ArrayList(); array.add("hello"); array.add("world"); array.add("java"); array.add("hello"); array.add("java"); array.add("world"); array.add("world"); array.add("world"); array.add("java"); System.out.println("array:"+array); for(int i=0;i<array.size();i++){ for(int j=i+1;j<array.size();j++){ if(array.get(i)==array.get(j)){ array.remove(j); j--; } } } System.out.println("array:"+array); }
结果为
array:[hello, world, java, hello, java, world, world, world, java]
array:[hello, world, java]
正确。
以上是关于Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题的主要内容,如果未能解决你的问题,请参考以下文章
com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_OBJECT 令牌中反序列化 `java.util.Arra