《Java集合归纳》集合的注意事项、底层结构及补充知识。(下篇)

您所在的位置:网站首页 list集合去重工具类 《Java集合归纳》集合的注意事项、底层结构及补充知识。(下篇)

《Java集合归纳》集合的注意事项、底层结构及补充知识。(下篇)

2023-03-01 20:40| 来源: 网络整理| 查看: 265

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