Java 数据结构之List去重

来源:互联网 发布:js根据class 隐藏 编辑:程序博客网 时间:2024/04/28 04:29

我们可以假设这样一个流程:从网络上下来一组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 0