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

List集合去重的五种方法

程序员文章站 2022-06-10 08:31:37
...
package list_distinct_test;

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

/**
 * @author root
 * @version V1.0
 * @Package list_distinct_test
 * @date 2020/9/6 17:32
 */
public class ListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("c");
        list.add("b");
        list.add("a");

        delrepeat1(list);
        delrepeat2(list);
        delrepeat3(list);
        delrepeat4(list);
        delrepeat5(list);

        //System.out.println(list.toString());

    }

    /**
     * 方法1:去除重复数据:利用set集合无重复元素的特性进行去重
     * 将list集合加入set集合中
     * 由于set集合无序性,不会保持原来的顺序
     * @param list
     * @return
     */
    public static List<String> delrepeat1(List<String> list) {
        if (list != null && list.size() > 0) {
            Set set = new HashSet();
            List list2 = new ArrayList();
            set.addAll(list);
            list2.addAll(set);
            //return list2;
            System.out.println(list2.toString());

        }
        return null;
    }

    /**
     * 方法二:利用TreeSet、LinkedHashSet保持顺序一致去重
     */
    public static void delrepeat2(List<String> list){
        //方法1
        //List<String> listNew = new ArrayList<String> (new TreeSet<String>(list) );

        //方法2
        List<String> listNew2 = new ArrayList<String> (new LinkedHashSet<String>(list));

        System.out.println(listNew2.toString());

    }

    /**
     * 方法3:利用List集合的contains()方法
     * 遍历list集合,将元素加到另一个list集合中
     */
     public static void delrepeat3(List<String> list){
         List<String> list2 = new ArrayList<>();
         for (String str : list) {
             if(!list2.contains(str)){
                 list2.add(str);
             }
         }
         System.out.println(list2.toString());
     }

    /**
     * 方法4:循环遍历list,利用remove()方法去重
     */
    public static void delrepeat4(List<String> list){
        for(int i = 0; i < list.size() -1; i++){
            for(int j = list.size() - 1; j > i; j--){
                if(list.get(j).equals(list.get(i))){
                    list.remove(j);
                }
            }
        }
        System.out.println(list.toString());
    }

    /**
     * 方法5:利用java8的新特性:stream()流处理
     */
    public static void delrepeat5(List<String> list){
        List<String> list2 = list.stream().distinct().collect(Collectors.toList());
        System.out.println(list2.toString());
    }

}