android 面试题 集合类

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

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值