其他分享
首页 > 其他分享> > 去重的六种方式

去重的六种方式

作者:互联网

先了解下什么是有序/无序

无序:数据的排列顺序与我们预期的不一致

有序:数据的排列顺序符合我们的预期

什么是有序/无序集合

有序集合:插入和读取数据的顺序一致

无需集合:插入和读取数据的顺序不一致

去重

1.利用集合中的contains去重(有序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//contains去重
List<Integer> newList=new ArrayList<Integer>;
list.forEach(i->{
    if(!newList.contains(i)){//i代表list中的元素
        newList.add(i)//如果newList中不存在元素i,呢么就添加
  }			
}
System.out.println(newList)

2.迭代器去重(无序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//迭代器去重
Iterator<Integer> iterator = list.iterator();//创建迭代器对象
while(iterator.hashNext()){//查询是否有下一个元素
    integer item=iterator.next();//如果有则获取该元素
    if(list.indexOf(item)!=list.lastIndexOf(item)){
        iterator.remove();//迭代器中的删除是删除最后返回的元素
  }
}

3.hashSet去重(无序,但是会对结果集进行排序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//hashSet去重
Set<Integer> s=new HashSet<Integer>(list);//创建带参数的hashSet对象
System.out.println(s);

4.TreeSet(无序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//treeSet去重
Set s=new TreeSet(list);
System.out.println(s);

5.linkedHashSet(有序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//LinkedHashSet去重
Set<Integer> s=new LinkedHashSet<Integer>(list);
System.out.println(s);

6.Stream去重(有序)

//待去重集合
List<Integer> list=new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(7);
list.add(1);
list.add(9);
list.add(3);
list.add(2);

//Stream去重
List<Integer>stream=list.stream().distinct().collect(Collectors.toList());
System.out.println(stream)

标签:方式,六种,List,ArrayList,list,add,集合,new
来源: https://blog.csdn.net/q2422442709/article/details/122781015