java中list集合的几种去重方式

public class ListDistinctExample {

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>() {{
            add(1);
            add(3);
            add(5);
            add(2);
            add(1);
            add(3);
            add(7);
            add(2);
        }};
        System.out.println("原集合:" + list);
        method(list);

    }

    /**
     * 方法1:contains判断去重(有序)
     * @param list
     */
//    public static void method(List list){
//        List newList = new ArrayList();
//        for (Object i : list) {
//            if(!newList.contains(i)){
//                newList.add(i);
//            }
//        }
//
//        System.out.println("newList = " + newList);
//    }

    /**
     * 方法2:迭代器去重(无序)
     * @param list
     */
//    public static void method(List list){
//        Iterator iterator = list.iterator();
//        while (iterator.hasNext()) {
//            //获取循环的值
//            Object item = iterator.next();
//            //如果存在相同的值,看元素第一次出现的下标是否和最后一次出现的下标相同
//            if(list.indexOf(item) != list.lastIndexOf(item)){
//                //移除最后两个相同的值
//                iterator.remove();
//            }
//        }
//        System.out.println("list = " + list);
//    }

    /**
     * HashSet去重(无序)
     * @param list
     */
//    public static void method(List list){
//        HashSet set = new HashSet(list);
//        System.out.println("去重后的集合 = " + set);
//    }

    /**
     * LinkedHashSet去重(有序)
     * @param list
     */
//    public static void method(List list){
//        LinkedHashSet<Integer> set = new LinkedHashSet<>(list);
//        System.out.println("LinkedHashSet去重 = " + set);
//    }

    /**
     * 使用 Stream 去重
     * @param list
     */
    public static void method(List<Integer> list) {
        list = list.stream().distinct().collect(Collectors.toList());
        System.out.println("去重集合:" + list);
    }
}

 

posted @ 2021-12-06 22:49  黄大虾  阅读(1424)  评论(0编辑  收藏  举报