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

 我来答
教育小百科达人
推荐于2019-08-16 · TA获得超过156万个赞
知道大有可为答主
回答量:8828
采纳率:99%
帮助的人:476万
展开全部

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

白雪忘冬
高粉答主

2019-06-11 · 在我的情感世界留下一方美好的文字
白雪忘冬
采纳数:1007 获赞数:376621

向TA提问 私信TA
展开全部

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2018-02-28
展开全部
最好的办法是用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);
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-02-28
展开全部
【参考】
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式