您的位置:首页 > 编程语言 > Java开发

Java去除list中的重复值

2016-10-11 14:25 549 查看



Java去除list中的重复值

Java处理List中的重复值有两种方法,一种是经处理后得到新的无序list,另外一种则保留list原有的顺序。
方法一:使用Hastset的hashcode方法判断是否重复,数据不会重复,但顺序会变

[java] view
plain copy

public class ListOnlyValue_1  

{  

    public static void main(String[] args)  

    {  

        List<String> mylist = new ArrayList<String>();  

        mylist.add("test");  

        mylist.add("ab");  

        mylist.add("cd");  

        mylist.add("ab");  

        mylist.add("sd");  

        mylist.add("ab");  

        mylist.add("cd");  

        mylist.add("xyz");  

        System.out.println("处理前的list:" + mylist);  

        mylist = removeDuplicate(mylist);  

        System.out.println("处理后的list:" + mylist);  

    }  

  

    public static List<String> removeDuplicate(List<String> list)  

    {  

        HashSet<String> hashSet = new HashSet<String>(list);  

        list.clear();  

        list.addAll(hashSet);  

        return list;  

    }  

}  

代码运行结果如下:

处理前的list:[test, ab, cd, ab, sd, ab, cd, xyz] 

处理后的list:[test, sd, ab, xyz, cd]
方法二:通过Hashset的add方法判断是否已经添加过相同的数据,如果已存在相同的数据则不添加,维持list中元素原有的顺序。

[java] view
plain copy

public class ListOnlyValue_2  

{  

    public static void main(String[] args)  

    {  

        List<String> mylist = new ArrayList<String>();  

        mylist.add("test");  

        mylist.add("ab");  

        mylist.add("cd");  

        mylist.add("ab");  

        mylist.add("sd");  

        mylist.add("ab");  

        mylist.add("cd");  

        mylist.add("xyz");  

        System.out.println("处理前的list:" + mylist);  

        mylist = removeDuplicateWithOrder(mylist);  

        System.out.println("处理后的list:" + mylist);  

    }  

  

    public static List<String> removeDuplicateWithOrder(List<String> list)  

    {  

        HashSet<String> hashSet = new HashSet<String>();  

        List<String> newlist = new ArrayList<String>();  

        for (Iterator iterator = list.iterator(); iterator.hasNext();)  

        {  

            String element = (String) iterator.next();  

            if (hashSet.add(element))  

            {  

                newlist.add(element);  

            }  

        }  

        list.clear();  

        list.addAll(newlist);  

        return list;  

    }  

}  

代码运行结果如下:

处理前的list:[test, ab, cd, ab, sd, ab, cd, xyz] 

处理后的list:[test, ab, cd, sd, xyz] 

该方法运用了HashSet的add属性,若HashSet中已存在某元素,add方法是不会再将此元素add到HashSet中的,正是运用此原理,当HashSet能add一个元素时,newlist也跟着add一个元素,这样就得到一个维持原有顺序的没有重复值的新list。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: