总结下。
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);