java集合类主要由二个根接口派生的,Collection和Map
Collection派生的类的结构
List集合主要有ArrayList,Vector LinkedList Stack(栈)
Vector:已经废弃了,因为它是线程安全 导致效率变慢,
ArrayList:底层是由数组组成的,它的读插入和删除速度慢,时间复杂度都是O(n) 但是它的读取元素的效率高 时间复杂度为O(1)
LinkedList底层使用双向循环链表方式储存数据,所以头尾插入或读取插入的速度快,而中部插入和读取慢
Stack:主要是模拟jvm内存模型中的虚拟机栈
Queue集合主要是模拟数据队列的数据结构,比如线程池中就有7个队列
map的结构类图
HashTable和HashMap区别:
1:HashMap不是线程安全的 Hashtable是线程安全的 看put()方法是不是有synchronized
2:HashMap value可以是null 而HashTable 的value不可以是null
3:java 5引入了ConcurrentHashMap,它是Hashtable的一个替代方案,并提供比Java中的Hashtable更好的可伸缩性
TreeMap
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的
LinkedHashMap
它是按照存储的顺序进行的,在图片加载框架中的LRC 全称是Least Recently Used 意思是最近最少使用原则,Android图片缓存框架都用到了LruCache,这个类的底层实现就是使用了LinkedHashMap