面试中常考的几个集合类(java)

来源:互联网 发布:linux 查看 磁盘 编辑:程序博客网 时间:2024/04/30 01:01
这里首先借用下网上的一张集合接口关系图
下面简述几种常用集合的区别,还有部分不常用集合类未描述
Iterable迭代器接口,这是Collection类的父接口。实现这个Iterable接口的对象允许使用foreach进行遍历,也就是说,所有的Collection集合对象都具有"foreach可遍历性"。这个Iterable接口只
有一个方法: iterator()。它返回一个代表当前集合对象的泛型<T>迭代器,用于之后的遍历操作

List接口:
Collection接口子接口,单列集合,有序的,可重复
ArrayList:数组结构,线程不安全 ,查询快
LinkedList:链表结构,线程不安全,增删速度快
Vector:数组结构,线程安全同步的,速度慢,但后版本被ArrayList所代替

Set接口:
Collection接口子接口,单列集合,无序的,不可重复,需要迭代器(Iterator)来查询结果
HashSet:线程不安全,存取快
TreeSet:线程不安全,可排序(二叉树形式存在)TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间的大小关系,然后将集合元素按升序排序,即自然排序。


Map接口:
Map没有继承Collection接口,Map集合类Key-value 形式存在 不可重复,双列集合

HashMap:无序的,线程安全,访问快,不同步
HashTable:无序的,安全,同步,读取访问比HashMap慢,写入速度快
LinkedHashMap:有序的,哈希双向链表储存,遍历慢(容量无关,数据有关)
TreeMap:默认键升序排序

Queue 队列接口
Queue用于模拟"队列"这种数据结构(先进先出 FIFO)。队列的头部保存着队列中存放时间最长的元素,队列的尾部保存着队列中存放时间最短的元素。新元素插入(offer)到队列的尾部,
   访问元素(poll)操作会返回队列头部的元素,队列不允许随机访问队列中的元素。结合生活中常见的排队就会很好理解这个概念

Collection与Collections的区别:
Collection是集合类接口的父级接口,Collections是集合的辅助工具类,包含有添加,删除等操作方法
原创粉丝点击