Java 数据结构之List去重

我们可以假设这样一个流程:从网络上下来一组json数据,不管同步还是异步,第一个就是想先找个容器把他接下来,顺手就把list操起来了,然后就一直add,add,,,但是问题来了,我们不管三期二十七的把数据都接下来了,从来就没注意数据有重复的怎么去除呢,遍历吧,又老土有慢;突然想想如果当初用的是hashset该有多好,那么hashset有什么好呢,简单介绍下要点。
hashset,拆解一下,set说明他来自于集合,集合也就意味着,set里面没有重复的元素,hash就代表着hash结构,就是键值对,hashset的底层就是通过hashmap实现的,它只是封装了一个 HashMap 对象来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 key 来保存,而 HashMap 的 value 则存储了一个 PRESENT,它是一个静态的 Object 对象。 注意哦,这里的hash
set的hash不光要equals,还要hashcode。
那么问题来了,我能不能把他们混合在一起来实现我的目的呢,请看代码:

List listHasCup=new ArrayList();
        listHasCup.add(1);
        listHasCup.add(2);
        listHasCup.add(3);
        listHasCup.add(1);

        List listNoCup=new ArrayList(new HashSet(listHasCup));

恩,,好了,就是这么简单,多看源码有好处

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值