如何去除List集合中重复的元素

如何去除List集合中重复的元素,第1张

List去重是通过将List集合转换成Set。Set是最简单的一种集合,不保存重复的元素,集合中的对象不按特定的方式排序,并且没有重复对象。

新建一个Test类,如下所示:

publicclassTest{

@SuppressWarnings({"unchecked","rawtypes"})

publicstaticvoidmain(String[]args){

Listlist=newArrayList()

list.add(1)

list.add(2)

list.add(3)

list.add(4)

list.add(1)

System.out.println(list)

//创建一个set集合

Setset=newHashSet()

//创建一个新的list集合

ListnewList=newArrayList()

set.addAll(list)

newList.addAll(set)

System.out.println(newList)}

扩展资料

参考list是双向循环链表,,每一个元素都知道前面一个元素和后面一个元素。在STL中,list和vector一样,是两个常被使用的容器。和vector不一样的是,list不支持对元素的任意存取。

list中提供的成员函数与vector类似,不过list提供对表首元素的 *** 作push_front、pop_front,这是vector不具备的。

和vector另一点不同的是,list的迭代器不会存在失效的情况,不像vector会保留备份空间,在超过容量额度时重新全部分配内存,导致迭代器失效;list没有备份空间的概念,出入一个元素就申请一个元素的空间,所以它的迭代器不会失效。

参考资料来源:百度百科-list

//导入linq命名空间,然后distinct一下就可以了.关键代码如下:

usingSystem.Linq

//比如,list实例为list

varobj=list.Distinct()

//或者麻烦点要根据list的字段xxx过滤就是

varobj_1=frompinlistselectp.xxxdistinct()

扩展资料

list()函数与array()类似,只是它可以在一次 *** 作中从一个数组内提取多个值,同时为多个变量赋值。其形式如下:

voidlist(mixed?)

从数据库或文件中提取信息时,这种构造尤其有用。例如,假如你希望格式化并输出从一个文本,文件中读取信息。文件的每一行都包含用户信息,如姓名、职业和喜爱的颜色,每一项用竖线分隔。典型的一行如下所示:

NinoSanzi|profesionalgolfer|green

可以通过一个简单的循环使用list()来读取每一行,将各部分数据赋给变量,按照需要格式化并输出数据。

参考资料来源:百度百科:list

一个对象怎样算重复?

需要自己实现hashCode()和equals()方法来申明两个对象‘相等’的判断条件

最简单的就是

一个或多个成员变量的值相等(比如id,name)等,就认为这两个对象相等。

在这种情况下,就好办了

Set set = new HashSet()

set.addAll(list)

到这一步,已经利用set的特性去重了。

接下来再把去重后的集合放到一个新的list去即可

List newlist = new ArrayList()

newlist.addAll(set)

去重本身很简单。

复杂在对‘对象相等’概念的理解。

默认情况下,两个对象在继承了Object的方法后,

只有当堆内存地址相等的情况下,才相等。

所以,必须要自己重写equals和hashCode


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11651710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存