欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

List去重的五种方法

程序员文章站 2022-06-10 08:31:31
...

 

  • //1 去重第一种 使用Set转换
  • //2 利用Set辅助判断重复
  • //3 使用Java新特性stream
  • //4 双重循环使用remove()
  • //5 使用新的List,用contains判断
package com.imooc.list_liminatel_uplicate;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @description:
 * @author: WhiteCrowZHZ
 * @date: 2020/5/27 15:07
 */
public class Demo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(1);

        //1 去重第一种 使用Set转换
        Set<Integer> set1 = new TreeSet<>();
        List<Integer> list1 = new ArrayList<>();
        set1.addAll(list);
        list1.addAll(set1);
        System.out.println("list1" + list1);

        //改为一行代码
        List<Integer> list6 = new ArrayList<>(new HashSet<>(list));
        System.out.println("list6" + list6);

        //2 利用Set辅助判断重复
        Set<Integer> set2 = new TreeSet<>();
        List<Integer> list2 = new ArrayList<>();
        for(Integer integer : list) {
            if(set2.add(integer)) {
                list2.add(integer);
            }
        }
        System.out.println("list2" + list2);

        //3 使用Java新特性stream
        List<Integer> list3 = list.stream().distinct().collect(Collectors.toList());
        System.out.println("list3" + list3);

        //4 双重循环使用remove()
        List<Integer> list4 = new ArrayList<>(list);
        for(int i = 0; i < list4.size(); i++) {
            for(int j = 0; j < list4.size(); j++) {
                if(i != j && list4.get(i).equals(list4.get(j))) {
                    list4.remove(j);
                }
            }
        }
        System.out.println("list4" + list4);

        //第五种方式 使用新的List,用contains判断
        List<Integer> list5 = new ArrayList<>();
        for(Integer integer : list) {
            if(!list5.contains(integer)) {
                list5.add(integer);
            }
        }
        System.out.println("list5" + list5);
    }

}

 

 

相关标签: 面试 编码技能