list去重的几种方法

//set集合去重,不改变原有的顺序
public static void pastLeep1(List<String> list){
System.out.println("list = [" + list.toString() + "]");//先打印一下集合中看有那些的数据
List<String> listNew=new ArrayList<>();//创建一个新的集合
Set set=new HashSet();//创建一个set集合,因为set是不可重复的集合
for (String str:list) {//把要去重的集合遍历放到set集合中去重
if(set.add(str)){//set.add()的方法是返回的是一个boolean类型,成功为true,失败false
listNew.add(str);

}

//set在集合类中是不可重复的,,所以放到set中都是单跳,而list集合是可以重复的

}
System.out.println("listNew = [" + listNew.toString() + "]");
}

//遍历后判断赋给另一个list集合
public static void pastLeep2(List<String> list){
System.out.println("list = [" + list.toString() + "]");
List<String> listNew=new ArrayList<>();
for (String str:list) {
if(!listNew.contains(str)){//contains在集合中的方法是:是否包含的意思,返回的是一个boolean类型的 前面叫一个 "!" 表示不包含的意思
listNew.add(str);
}
}
System.out.println("listNew = [" + listNew.toString() + "]");
}

//set去重
public static void pastLeep3(List<String> list){
System.out.println("list = [" + list + "]");
Set set = new HashSet();
List<String> listNew=new ArrayList<>();
set.addAll(list);
listNew.addAll(set);
System.out.println("listNew = [" + listNew + "]");
}

//set去重(缩减为一行)
public static void pastLeep4(List<String> list){
System.out.println("list = [" + list + "]");
List<String> listNew=new ArrayList<>(new HashSet(list));
System.out.println("listNew = [" + listNew + "]");
}

//去重并按自然顺序排序
public static void pastLeep5(List<String> list){
System.out.println("list = [" + list + "]");
List<String> listNew=new ArrayList<>(new TreeSet<String>(list));//TreeSet是一个树形结构的set集合,集合中的数据是按照一定的顺序进行排序(自然排序和二叉树等)
System.out.println("listNew = [" + listNew + "]");

}

猜你喜欢

转载自www.cnblogs.com/JerryTomcat/p/9120203.html
今日推荐