List去重方案
方案一:借助Set的特性进行去重
/**
* 去除重复数据
* 由于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;
}
方案二 : 利用set集合特性保持顺序一致去重
// 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));
}
方案三 : 使用list自身方法remove()
/**
* 去除重复数据(一般不推荐)
* 类似于冒泡排序
* @param list
*/
public static List<Map<String, Object>> distinct(List<Map<String, Object>> list) {
if (null != list && list.size() > 0) {
//循环大的list集合
for (int i = 0; i < list.size(); i++) {
//得到list中每一个map
Map map= list.get(i);
for (int j = 1; j < list.size(); j++) {
Map map2= list.get(j);
if (map.equals(map2)) {
list.remove(j);
continue;
}
}
}
}
//得到最新移除重复元素的list
return list;
}
方案四 : 遍历List集合,将元素添加到另一个List集合中
// 遍历后判断赋给另一个list集合,保持原来顺序
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 ;
}
方案5 : 使用Java8特性去重,是我最喜欢用的方法
public static List<String> delRepeat(List<String> list) {
List<String> myList = listAll.stream().distinct().collect(Collectors.toList());
return myList ;
}