如何去除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

通过循环进行删除

public static void removeDuplicate(List list) { 

for ( int i = 0 i <list.size() - 1 i ++ ) { 

for ( int j = list.size() - 1 j >ij -- ) { 

if (list.get(j).equals(list.get(i))) { 

list.remove(j) 

}

}

System.out.println(list)

}

通过HashSet删除

public static void removeDuplicate(List list) {

HashSet h = new HashSet(list)

list.clear()

list.addAll(h)

System.out.println(list)

}

3、删除重复元素,并保持顺序。(我没试)

public static void removeDuplicateWithOrder(List list) {

Set set = new HashSet()

List newList = new ArrayList()

for (Iterator iter = list.iterator()iter.hasNext()) {

Object element = iter.next() 

if (set.add(element)) 

newList.add(element) 

}

list.clear()

list.addAll(newList)

System.out.println( " remove duplicate " + list)

}

4、定义一个方法,调用即可。

publi List<String>getNewList(List<String>li){

List<String>list = new ArrayList<String>()

for(int i=0i<li.size()i++){

String str = li.get(i)//获取传入集合对象的每一个元素

if(!list.contains(str)){ //查看新集合中是否有指定的元素,如果没有则加入

list.add(str)

}

}

return list//返回集合

}

public class Test{

public static void main(String[] args){

ArrayList<String>arr = new ArrayList<String>()

arr.add("aaa")

arr.add("bbb")

arr.add("aaa")

arr.add("ccc")

arr = getNewList(arr)//方法去重

System.out.println(arr)

}

}

package com.test

import java.util.*public class Test {    /**

AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC     */

public static void main(String[] args) {

List<String>list = new ArrayList<String>()

list.add("AAAA")

list.add("AAAA")

list.add("AAAA")

list.add("BBBB")

list.add("BBBB")

list.add("BBBB")

list.add("CCCC")

list.add("CCCC")

list.add("CCCC")

list.add("DDDD")       new Test().removeDuplicateWithOrder(list)//      System.out.println(list)   }    // 删除ArrayList中重复元素

public static void removeDuplicate(List list) {        for (int i = 0i <list.size() - 1i++) {            for (int j = list.size() - 1j >ij--) {                if (list.get(j).equals(list.get(i))) {

list.remove(j)

}

}

}

System.out.println(list)

}    // 方法二:通过HashSet剔除    // 删除ArrayList中重复元素,add进去顺序就变了不考虑顺序的话可以使用

public static void removeDuplicate1(List list) {

HashSet h = new HashSet(list)

list.clear()

list.addAll(h)

System.out.println(list)

}    // 方法三: 删除ArrayList中重复元素,保持顺序    // 删除ArrayList中重复元素,保持顺序

public static void removeDuplicateWithOrder(List list) {

Set set = new HashSet()

List newList = new ArrayList()       for (Iterator iter = list.iterator()iter.hasNext()) {

Object element = iter.next()           if (set.add(element))

newList.add(element)

}

list.clear()

list.addAll(newList)

System.out.println(" remove duplicate " + 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


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

原文地址:https://54852.com/bake/11493107.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存