List 去重的五种方法
一、借助 Set 的特性进行去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public static List<String> distinct(List<String> list) { final boolean sta = null != list && list.size() > 0; List doubleList= new ArrayList(); if (sta) { Set set = new HashSet(); set.addAll(list); doubleList.addAll(set); } return doubleList; }
|
二、利用 Set 集合特性保持顺序一直去重
1 2 3 4 5 6 7
| 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)); }
|
三、使用 List 自身方法 remove() -> 不推荐
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public static List<Map<String, Object>> distinct(List<Map<String, Object>> list) { if (null != list && list.size() > 0) { 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); } } } } return list; }
|
四、遍历 List 集合,将元素添加到另一个 List 集合中
1 2 3 4 5 6 7 8 9 10
| public static List<String> delRepeat(List<String> list) { List<String> listNew = new ArrayList<String>(); for (String str : list) { if (!listNew.contains(str)) { listNew.add(str); } } return listNew ; }
|
五、使用 Java8 特性去重
1 2 3 4
| public static List<String> delRepeat(List<String> list) { List<String> myList = list.stream().distinct().collect(Collectors.toList()); return myList ; }
|