集合
Collection单列
Collection单列集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素。
JDK不提供此接口的任何实现,它提供更具体的子接口(如set和list)的实现。创建Collection对象采用多态的方式。
Collection子类——List可重复集合
- ArrayList
ArrayList数据结构是动态数组 - LinkedList
LinkedList数据结构是双向链表
两者区别:
- 数据结构不同。
- 线程安全性来说ArrayList是线程不安全的,而LinkedList是线程安全的。
- 效率不同,随机访问list时,ArrayList比LinkedList更加高效。
- 空间灵活性不同,ArrayList随着元素增加需要不断增加指定容量。而LinkedList则无需指定容量。
- 主要开销不同,ArrayList主要控件开销在于需要list列表预留一定空间,而LinkedList主要控件开销在于需要存储节点信息以及节点指针。
Collection子类——Set不可重复集合
Set不包含重复元素的集合。其次Set没有带索引方法,所以不能使用普通for循环。
-
HashSet
- HashSet对迭代次序不做任何保证。
- HashSet通过hashCode和equals方法保证元素唯一性。
- 可以通过重写hashCode和equals方法,来比较元素是否重复。
-
TreeSet
- TreeSet集合中的元素按照一定的规则进行排序,具体排序方式取决于构造方法。
- TreeSet():根据元素的自然顺序进行排序
- TreeSet(Comparator comparator):根据指定的比较器进行排序
- 没有索引方法,所以不能使用普通for循环进行遍历。
- TreeSet集合中的元素按照一定的规则进行排序,具体排序方式取决于构造方法。