当前位置: 首页 > 编程笔记 >

如何去除Java中List集合中的重复数据

司马羽
2023-03-14
本文向大家介绍如何去除Java中List集合中的重复数据,包括了如何去除Java中List集合中的重复数据的使用技巧和注意事项,需要的朋友参考一下

1.循环list中的所有元素然后删除重复

public class duplicatRemoval {
public static List removeDuplicate(List list){
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;
}
}

总结:

两层循环,外层循环从第一个元素向最后一个元素循环,内层循环是从最后一个元素向外层循环元素的当前元素循环。比较两个元素是否相等,如果相等,移除靠后的元素来进行去重。这种方法时间复杂度大于O(n),小于O(N²)

2.通过HashSet剔除重复元素

public class duplicatRemoval {
public static List removeDuplicate(List list) {
HashSet hashSet = new HashSet(list) ;
list.clear();
list.addAll(hashSet);
return list;
}
}

总结:

此种方式是利用了Set的特性:元素不可重复,其底层原理是先计算每个对象的hash值,再比较元素值是否相同,如果相同,则保留最新的。

3.删除ArrayList中重复元素,保持顺序

public class duplicatRemoval {
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet( );
List newList = new ArrayList();
for (Iterator iter = list. iterator(); iter. hasNext();) {
0bject element= iter.next( );
if (set. add( element) )
newList.add( element);
}
list.clear();
list.addAll(newList);
System. out. println(”remove duplicate"+ list);
}
}

4.把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中

public class duplicatRemoval {
public static List removeDuplicate(List list){
List listTemp = new ArrayList();
for(int i=0;i<list. size();i++){
if( !listTemp . contains(list.get(i))){
listTemp. add(list.get(i));
}
return listTemp;
}

5.用JDK1.8 Stream中对List进行去重:list.stream().distinct();

public class duplicatRemoval {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>( 1000000) ;
for(inti=0;i<10;i++){
list. add(1);
System . out. println(list);
List shortList = removeDuplicate(list);
System . out . println( shortList);
}
@Suppres sWarnings( "rawtypes" )
public static List removeDuplicate(List list){
List newList = (List) list. stream(). distinct( ).collect(Collectors. toList());
return newList ;

首先获得此list的Stream,然后调用distinct()方法。Java8中提供流的方式对数据进行处理,非常快,底层用的是forkJoin框架,提供了并行处理,使得多个处理器同时处理流中的数据,所以耗时非常短。

到此这篇关于如何去除Java中List集合中的重复数据的文章就介绍到这了,更多相关Java List集合内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍如何从MongoDB集合中删除重复项,包括了如何从MongoDB集合中删除重复项的使用技巧和注意事项,需要的朋友参考一下 为此,设置“ unique:true ”,即唯一约束,并避免插入重复项,如以下语法所示: 为了理解上述语法,让我们创建一个包含文档的集合。在这里,不允许重复插入- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-

  • 本文向大家介绍php去除数组中重复数据,包括了php去除数组中重复数据的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接上代码 代码很简单,却非常的实用,有需要的小伙伴可以直接拿去用的。 另附上其他网友的解决办法 PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 arr

  • schema-database:yelp_camp,collection:campgrounds,集合中的记录数等于4 问题-集合中存在重复记录,希望删除除第一条记录外的所有记录。

  • 本文向大家介绍java集合中的list详解,包括了java集合中的list详解的使用技巧和注意事项,需要的朋友参考一下 1、List接口 该接口定义的元素是有序的且可重复的。相当于数学里面的数列,有序可重复 booleanaddAll(intindex,Collection<?extendsE>c);将指定集合中所有元素,插入至本集合第index个元素之后defaultvoidreplaceAll

  • 本文向大家介绍List集合多个复杂字段判断去重的案例,包括了List集合多个复杂字段判断去重的案例的使用技巧和注意事项,需要的朋友参考一下 List去重复,我们首先想到的可能是 利用List转Set集合,因为Set集合不允许重复。所以达到这个目的。 如果集合里面是简单对象,例如Integer、String等等,这种可以使用这样的方式去重复。但是如果是复杂对象,即我们自己封装的对象。用List转Se

  • 统计一个一维数组中的各个元素的个数,然后删除多出来的重复元素,并输出结果。 例如:[1,2,2,2,3,3,3,3,3]—>[1,2,3] 解决思路 将重复元素的列表中的重复元素进行统计,并将统计结果放在dictionary中,key为元素,value为该元素的个数 更新此步方法:上述步骤的功能,能够通过另外一个方法实现,即collections.Counter() 然后通过for获取key,得到