呜呜呜!我来迟了!
一开始计划的两天一更,硬拖到了两周一更了!
感觉自己每天还是给自己安排了一堆事情,然后完全不可能完成,直接自己“鸽”掉,害!今天上传一下自己之前整理的一点点笔记,溜了溜了
Java集合
List,Set,Map都是接口,前两个继承至Collection接口,Map为独立接口集合
Set下常见的有HashSet,LinkedHashSet,TreeSet
List下常见的有ArrayList,Vector,LinkedList
Map下常见的有HashTable,LinkedHashMap,HashMap,TreeMap
List有顺序 可以重复
-
ArrayList 底层是数组 优点:效率高 查询比较快速能准确定位到元素。
缺点:线程不安全 增删效率低。
-
Vector 底层是数组 优点:线程安全 查询比较快速能准确定位到元素。
缺点:效率低 增删效率低。
-
LinkedHashSet 底层是链表 优点:效率高 增删效率较快。
缺点:不安全 查询效率低。
Set无序 不可重复(唯一)
如何保证元素的唯一性?依赖HashCode()和equals()
Map(接口)
-
TreeMap有序 不安全 基于红黑树
-
HashTable,HashMap是无序的
HashMap基于Hash算法实现的(HashMap在1.7之前使用的是数组+链表实现,在1.8+使用的数组+链表+红黑树实现)
1.当put元素时,利用key的HashCode重新计算出当前对象元素在数组中的下标。
2.如果出现Hash值相同的key,当key相同,则覆盖原始值;当key不同(hash冲突),将key-value放入链表中。
节点数据超过八个转为红黑树。