android 面试题 集合类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/coderinchina/article/details/96041400

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

猜你喜欢

转载自blog.csdn.net/coderinchina/article/details/96041400