Java集合框架

Java完整容器分类图

图片来源:

  点线框代表接口,实线框代表普通的(具体的)类,空心白箭头的点线表示一个特定的类实现了一个接口,实心黑箭头表示某个类可以生成箭头所指向类的对象。

ArrayList与LinkedList的区别

  ArrayList的底层数据结构是数组,它擅长于随机访问元素,使用下标查找元素的时间复杂度是O(1),但是在ArrayList的中间插入和移除元素时比较慢。

  LinkedList的底层数据结构是双向循环链表,不支持随机访问,使用下标查找元素的时间复杂度是O(n),但是在LinkedList中间进行插入和删除代价花费较小,速度比ArrayList快。(注:具体的问题,请具体分析,不一定LinkedList快)

Set

  Set(interface):存入set的元素必须是唯一的,加入Set的元素必须定义equals方法以确保对象的唯一性,Set接口不保证维护元素的次序。

  *HashSet(默认选择):为快速查找而设计的Set。存入HashSet的元素必须定义hashCode()

  TreeSet:保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。元素必须实现Comparable接口。

  LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入次序)。元素也必须定义hashCode()方法。

待续...

原文地址:https://www.cnblogs.com/yunche/p/9550654.html