java中list数据_Java中List去重

public static List removeDuplicate(List list) {

List newList = (List) list.stream().distinct().collect(Collectors.toList());

return newList;

}

首先获得此list的Stream,然后调用distinct()。Java8中提供流的方式对数据进行处理,非常快,底层用的是forkJoin框架,提供了并行处理,使得多个处理器同时处理流中的数据,所以耗时非常短。

二、通过HashSet剔除重复元素

public static List removeDuplicate(List list) {

HashSet hashSet = new HashSet(list);

list.clear();

list.addAll(hashSet);

return list;

}

6f8f0739c9f8

总结:

此种方式是利用了Set的特性:元素不可重复,其底层原理是先计算每个对象的hash值,再比较元素值是否相同,如果相同,则保留最新的。

三、删除ArrayList中重复元素,保持顺序

//通过HashSet剔除重复元素

public static List removeDuplicate(List list) {

Set set = new HashSet();

List newList = new ArrayList();

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

Object next = iter.next();

if (set.add(next)) {

newList.add(next);

}

}

list.clear();

list.addAll(newList);

return list;

}

四、遍历list,用tempList.contain(),不存在add

public static List removeDuplicate(List list) {

List tempList = new ArrayList();

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

if (!tempList.contains(list.get(i))) {

tempList.add(list.get(i));

}

}

return tempList;

}

五、循环list中的所有元素然后删除重复

一定得是顺序重复的,乱序重复的不靠谱儿

//循环list中的所有元素然后删除重复

public static List removeDuplicate(List list) {

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

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

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

list.remove(list.get(i));

}

}

}

return list;

}

6f8f0739c9f8

总结:

两层循环,外层循环从第一个元素向最后一个元素循环,内层循环是从最后一个元素向外层循环元素的当前元素循环。比较两个元素是否相等,如果相等,移除靠后的元素来进行去重。这种方法时间复杂度大于O(n),小于O(N²)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值