码迷,mamicode.com
首页 > 编程语言 > 详细

Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题

时间:2016-10-23 14:50:12      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:开始   static   add   log   color   bsp   没有   ring   div   

该问题有两种方法:

  一

  利用两个数组,此法简单,不讨论

  二

  利用一个数组,从第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中的重复元素,注意留意一个问题

标签:开始   static   add   log   color   bsp   没有   ring   div   

原文地址:http://www.cnblogs.com/huangytao/p/5989818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!