list去重 distinct

it2024-11-03  5

总结下。

1. 使用java8新特性stream进行List去重

public static List<String> delRepeat(List<String> list) {      List<String> myList = listAll.stream().distinct().collect(Collectors.toList());      return myList ; }  

2.双重for循环去重 (不推荐使用,速度太慢)

实际是使用list自身方法remove()方法。 

        for (int i = 0; i < list.size(); i++) {             for (int j = 0; j < list.size(); ) {                 if (i != j && list.get(i) == list.get(j)) {                     list.remove(j);                 } else {                     j++;                 }             }         }

3.set集合判断去重

不打乱顺序

A  // Set去重并保持原先顺序的两种方法    public static void delRepeat(List<String> list) {           //方法一        List<String> listNew = new ArrayList<String>(new TreeSet<String>(list));        //方法二        List<String> listNew2 = new ArrayList<String>(new LinkedHashSet<String>(list));    }

B Set set1 = new HashSet();  List newList1 = new ArrayList();  for (Integer integer : list) {  if(set1.add(integer)) {  newList1.add(integer);  }  } 

 

打乱顺序

     /**      * 去除重复数据      * 由于Set的无序性,不会保持原来顺序      * @param list      */     public static List<Map<String, Object>> distinct(List<Map<String, Object>> list) {         final boolean sta = null != list && list.size() > 0;         if (sta) {             Set set = new HashSet();             List doubleList= new ArrayList();             set.addAll(list);             doubleList.addAll(set2);             return doubleList;         }         return null;     }  

4.遍历后判断赋给另一个list集合 

List newList2 = new ArrayList();  for (Integer integer : list) {  if(!newList2.contains(integer)){  newList2.add(integer);  }  } 

5.

Set set2 = new HashSet();  List newList3 = new ArrayList();  set2.addAll(list);  newList3.addAll(set2);  System.out.println(“set和list转换去重:”+newList3);

 

最新回复(0)