Java集合

Posted by BY annie dong on September 27, 2018

java集合太多…


Collection接口 - 根接口

List接口 - 有序,重复

ArrayList - 底层数据结构,动态数组

动态数组,线程不安全,效率高
查询快,增删慢(移动所有数据)

LinkedList - 底层数据结构, 链表

链表, 线程不安全,效率高
查询慢,增删快,特別适用于批量插入、删除数据

Vector - 底层数据结构,数组

数组,线程安全,效率低
查询快,增删慢

Set接口 - 无序、唯一,提供了按索引訪問的方式。

HashSet - 底层数据结构, 哈希表

依赖两方法hashCode()和equals():对象equals 是true的話,hashCode需要相同,但是hashCode相同的对象不一定equals,這就是所谓的冲突現象,但是有不同的冲突解決方法。你的hashCode()设计的好的话冲突也就小了。比如给出的超出int范围之后这种hashCode()实现,对象肯定是无序的,但是hash实现是有限的呢,所以冲突了

LinkedHashSet - 底层数据结构, 链表和哈希表

有序,不重复,链表保证有序, 哈希表保证唯一

TreeSet - 底层数据结构, 红黑树

一种自平衡的二叉樹。返回值是否为0,唯一性


Map接口 -键值对、键唯一、值不唯一

HashMap - 底层数据结构,哈希表

线程不安全,效率高 依赖两方法, hashCode()和equals()判断是否添加到集合

LinkedHashMap - 底层数据结构, 链表和哈希表

有序,不重复,链表保证有序, 哈希表保证唯一

Hashtable - 底层数据结构,哈希表

哈希表, 线程安全,效率低

TreeMap- 底层数据结构, 红黑树

返回值是否为0,唯一性


Iterator接口

所有的集合类都实现这个接口,用法:

  1. hasNext()是否还有下一個元素。
  2. next()返回下一個元素。
  3. remove()刪除当前元素。