《Java集合归纳》集合的注意事项、底层结构及补充知识。(下篇) |
您所在的位置:网站首页 › list集合去重工具类 › 《Java集合归纳》集合的注意事项、底层结构及补充知识。(下篇) |
1、开发中如何选择集合来使用?
(1)第一步:先判断存储的类型:是一组对象?还是一组键值对? (2)一组对象: Collection接口 List允许重复: 增删多 : LinkedList [底层维护了一个双向链表] 改查多 : ArrayList 底层维护Object类型的可变数组] Set不允许重复: 无序 : HashSet {底层是HashMap,维护了一个哈希表即(数组+链表+红黑树)} 排序 : TreeSet 插入和取出顺序一致 : LinkedHashSet , 维护数组+双向链表 (3)一组键值对: Map 接口 键无序 : HashMap [底层是:哈希表 jdk7:数组+链表,jdk8:数组+链表+红黑树] 键排序 : TreeMap 键插入和取出顺序一致 : LinkedHashMap 读取文件 :Properties 2、HashSet 和 TreeSet分别如何实现去重的?▲ HashSet 的去重机制 : hashCode() + equals(),底层先通过存入对象,进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在的位置没有数据, 就直接存放;如果有数据,就进行equals比较[遍历比较]。如果比较后不相同,就加入;否则就不加入。 ▲ TreeSet 的去重机制 : 如果你传入了一个Comparator 匿名对象,就使用实现的compare去重,如果方法返回0,就认为是相同的元素或数据, 就不添加;如果你没有传入一个Comparator 匿名对象,则以你添加的对象实现的Compareable接口的compareTo去重。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |