java 集合去重_java集合去重处理

这里分享下我做过的集合去重处理!顾名思义就是把一个集合处理了,然后得到一个新的集合,这个集合里面的元素是没有重复的!下面就是贴出的代码啦!

public class UniqueListUtils {

public static List removeDuplicateWithList(List list) {

Set set = new HashSet();

List newList = new ArrayList();

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

T element = iter.next();

if (set.add(element))

newList.add(element);

}

return newList;

}

}

这里面的T就是传进去的任意对象类型拉,假如你要传入一个List的集合,你的T就是String啦。当然这个方法你只需要调用就行了,随便传入一个已知的list集合进去就行啦!

这里面主要用到的就是hashSet里面的算法啦,hashSet自带了一个add方法,返回的是一个boolean值,他会自动根据hashcode来判断是否有相同值啦!这种方法比自己做if判断来得效率要高很多的!

再说说这种方法的劣势吧,这种方式去重并不是特别好,当然这种写法是一种给菜鸟的思路啦,java自带jdk里面有很好的实现方法,不过我们这些菜鸟很多都是不知道的!

这里引用下一楼大神的方法,他提供的就是原本jdk自带实现的方法,当然有兴趣的同学可以去看看jdk源码是怎么处理集合去重的!在这里感谢"酷的飞上天空"这位大神,让我又学到东西啦,多谢啦!有更好的算法或者实现的朋友么可以在下面讨论下哦,菜鸟们会很感激的啦!在此多谢啦!

[quote="酷的飞上天空"]List list

// 去重

list =  new ArrayList(new HashSet(list));

[/quote]

希望能帮到你!

最后我修改了下"酷的飞上天空"的写法再贴上来,需要的可以看看哈!

public static List removeDuplicateByHashSet(List list){

List newlist = new ArrayList(new HashSet(list));

return newlist;

}

下面是hashset源码处理,贴出来看下 哈

public HashSet(Collection extends E> c) {

map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));

addAll(c);

}

反正我现在的积累是看不太懂的!

ba36ea4d4f72068c91b6bcf14e830382.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值