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中的重复元素,注意留意一个问题的主要内容,如果未能解决你的问题,请参考以下文章

总结软件开发过程中最常犯的10个问题

com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_OBJECT 令牌中反序列化 `java.util.Arra

java集合--ArrayList的实现原理

JAVA集合9ArrayList和Vector区别

java - 如何从java中的另一个ArrayList中删除一个ArrayList的元素?

在 Java 中从 ArrayList 中删除对象