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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)