学习笔记面试问题3集合框架

学习笔记


List,Set,Map的区别
List和Set来自于Collection接口,Map是顶级接口
List元素可以重复,可以添加空值,有序的Set元素不可以重复,允许有一个空值,无序的Mapkey可以有一个null值,value可以存储多个空值,默认无序的

ArrayList,LinkedList,Vector的存储性能和特性
ArrayList和Vector来自于AbstractList,LinkedList来自于AbstractSequentialList
Vector线程安全,同步的,可以通过下标访问,利于查询
ArrayList线程非安全实现,非同步的,可以通过下标访问,利于查询
LinkedList线程非安全,非同步,通过节点访问,利于增删数据

HashMap和Hashtable的区别
都是实现Map接口
HashMap继承自AbstractMap,初始化容量为16,非同步,效率更高,数组+链表+红黑树
Hashtable继承自Dictionary,初始化容量为11,同步方法,在多线程情况下使用,效率低

HashoMap和ConcurrentHashMap的区别
ConcurrentHashMap解决多线程下的安全和效率问题,JDK1.8之前采用的是分段锁技术,JDK1.8之后把分段锁技术给废掉了采用CAS技术

HashSet和HashMap的区别
HashSet底层是HashMap

Iterator迭代器
只有remove方法没有add方法
在遍历的时候,想要移除数据,一般采用迭代器

Iterator和Iterable的区别
able表示一种能力,根据自己的数据结构,重写hasnext和next

Enumeration是什么?和iterator的区别
Enumeration也是一种迭代,但是它没有实现fail-fast(迭代器获取一个集合,已经获取了集合的大小,当他半路的时候删除一个数据,大小与已知的大小不匹配,会越界)

fail-fast和fail-safe(使用CopyOnWriteArrayList方法)的区别,怎样避免
fail-fast更改的是数据本身,fail-safe更改的是数据的副本,占用的空间比较大,数据时效性比较低

Comparable和Comparator的区别
功能:作比较,Collection.sort(list)
Comparable是一个内部比较器,compareTo(T o)
Comparator是一个外部比较器,compare(o1,o2)
TreeMap的key一定要实现比较器

发布了16 篇原创文章 · 获赞 1 · 访问量 414

猜你喜欢

转载自blog.csdn.net/qq_39898191/article/details/99887593