List集合数据去重

对list数据去重的方法有如下几种,先以String类型的集合进行说明,对象的元素比较麻烦,详见对象去重

定义的集合如下:

List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("5");
list.add("3");
list.add("2");
list.add("4");

1.借助Set的特性进行去重

set集合中的元素是不可重复的。不会保持原来的顺序

    public static List<String> distinctList(List<String> list) {
        List<String> newList = new ArrayList();
        if (null != list && list.size() > 0) {
            Set set = new HashSet();
            set.addAll(list);
            newList.addAll(set);
        }
        return newList;
    }

这种情况不会保持原来顺序,原因是set是无序的。

2.利用set集合特性保持顺序一致去重

在创建list集合时传入LinkedhashSet,会保持原来的顺序

    public static List<String> distinctList(List<String> list) {
        List<String> newList = new ArrayList();
        if (null != list && list.size() > 0) {
            newList = new ArrayList<>(new LinkedHashSet<>(list));
        }
        return newList;
    }

3.使用Java8特性去重

3.1String去重

使用java8集合的新特性stream的distinct()方法。可保持原来的顺序

    public static List<String> distinctList(List<String> list) {
        List<String> newList = new ArrayList();
        if (null != list && list.size() > 0) {
            newList = list.stream().distinct().collect(Collectors.toList());
        }
        return newList;
    }

4.遍历集合进行判断

4.1String去重

遍历后判断是否包含,而赋给另一个list集合。可保持原来的顺序

    public static List<String> distinctList(List<String> list) {
        List<String> newList = new ArrayList();
        if (null != list && list.size() > 0) {
            for (String str : list) {
                if (!newList.contains(str)) {
                    newList.add(str);
                }
            }
        }
        return newList;
    }

 这种方式在复杂类型时可能会使用。

posted @ 2021-11-17 19:13  钟小嘿  阅读(424)  评论(0编辑  收藏  举报