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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何去除List集合中重复的元素相关的知识,希望对你有一定的参考价值。

1、通过循环进行删除

public static void 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);

System.out.println(list);

2、通过HashSet删除

public static void removeDuplicate(List list)

HashSet h = new HashSet(list);

list.clear();

list.addAll(h);

System.out.println(list);

扩展资料:

List集合代表一个元素有序,可重复的集合,集合中每个元素都有对应的顺序索引。List接口中增加了一些根据索引操作元素的方法:

void add(int index,E element )  在列表的指定位置插入该元素。

boolean addAll(int index,Collection c)  将集合c包含的所有元素都插入到List集合的index处。

Object get(int index)    返回集合index索引出的元素。

List额外提供的一个listIterator()方法,提供了专门操作List的方法。

ListIterator接口在Iterator的基础上增加了如下方法:

boolean hasPrevious(): 返回该迭代器关联的集合是否还有上一个元素。

Object previous(): 返回该迭代器的上一个元素。

void add((E e): 在指定位置插入一个元素。

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

参考技术A

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

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

public class Test

@SuppressWarnings( "unchecked", "rawtypes" )

public static void main(String[] args)

List list = new ArrayList();

list.add(1);

list.add(2);

list.add(3);

list.add(4);

list.add(1);

System.out.println(list);

//创建一个set集合

Set set = new HashSet();

//创建一个新的list集合

List newList = new ArrayList();

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

参考技术B 最好的办法是用Set,因为Set里面存放的数据是不重复的。
如果你不想用Set,那还可以向下面这样处理。

List list_tmp = new ArrayList(); //建立一个用于临时存放不重复list元素的List集合。
for(Object obj:list)
//可以根据需要,在这里加上强制转型。
//如list里面存放的是一个User对象,那么加上User u = (User) obj;
if(!list_tmp.contains(obj)) //注意contains方法是通过equals方法进行比较的所以你要根据你自己的需要看是否需要重写list对象里面的equals方法。
list_tmp.add(obj);//如果上面加了强制转型,这里需要写list_tmp.add(u);

本回答被提问者和网友采纳
参考技术C 【参考】
1、通过循环进行删除

public static void 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);



System.out.println(list);


2、通过HashSet删除
public static void removeDuplicate(List list)
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);

以上是关于如何去除List集合中重复的元素的主要内容,如果未能解决你的问题,请参考以下文章

去除list集合中重复项的几种方法

如何去除List集合中的重复元素? a,b,c,a,c,b,d,,,,,,

去除集合中重复字符串元素的案例

List集合去除重复元素,不打乱顺序(数组转List)

List集合去除重复数据

List集合去除重复对象及equals()hashCode()方法的作用