什么是集合?
集合是java用于存储数据所提供的容器。
集合框架一览:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR1EMjpmT4tGROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5gDO3UjNxIjMxIjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
AbstractList 、AbstractSet、AbstractMap实际上都是中间接口。
这些 Abstractxxx 类提供了所对应的 接口 的框架实现。以最小化实现此接口所需的工作,由“随机访问”数据存储(如数组)支持。
所以为了简便,我们单另看单例集合Collection。
图片来源冰河一角
上图中淡绿色背景覆盖的是集合体系中常用的实现类,分别是ArrayList、LinkedList、ArrayQueue、HashSet、TreeSet、HashMap、TreeMap等实现类也是我们着重要描述的部分。
集合存储的都是对象,类型可以不一致。
(tips:集合框架库在 java.util 包下,但支持多线程的集合类位于java.util.concurrent)
集合按照存储的结构可以分为单例集合以及双例集合。
单例集合对应的根接口为java.util.Collection
双利集合对应的根接口为java.util.Map
单例集合根接口Collection
Collection:用于存储一系列符合某种规则的元素,有三个子接口。List,Set,Queue。
Collection中的方法
方法 | 描述 |
---|---|
int size() | 返回此集合中有效个数 |
boolean isEmpty() | 此集合是否为空 |
boolean contains(Object o) | 此集合中是否含有对象 o |
Iterator iterator() | 返回实现遍历的迭代器 |
boolean add(E e) | 将 e 这个对象添加到集合中 |
boolean remove(Object o) | 把 o 对象从集合中移除 |
containsAll(Collection<?> c) | 如果此集合包含指定集合中的所有元素,返回true |
boolean addAll(Collection<? extends E> c) | 将指定集合中的所有元素添加到此集合(可选操作)。 |
boolean removeAll(Collection<?> c) | 删除所有相交元素 |
void clear() | 清空集合中所有元素 |
boolean retainAll(Collection<?> c) | 从这个集合中删除指定集合中不包含的所有元素。 |
boolean equals(Object o) | 比较集合与此对象是否相等 |
int hashCode() | 返回此集合的哈希码值 |
Object[] toArray() | 返回一个包含此集合中所有元素的数组。 |
T[ ] toArray(T[ ] a) | 返回一个包含该集合中所有元素的数组 |
List
List 代表了有序、可重复、不允许元素为空的集合,可直接根据元素的索引来访问,实现 List 的接口的类是 Vector 以及其子类 Stack 。
(tips:有序指的是按照1 2 3 4 插入那么遍历出的结果也是 1 2 3 4)
Set
Set 代表无序、不可重复、不允许元素为空的集合,只能根据元素本身来访问。实现 Set 接口的类有HashSet及其子类LinkedHashSet,子接口有EnumSet、SortedSet。以及实现Sorted的TreeSet。
Queue
实现Queue接口的接口和类分别是 Deque、PriorityQueue 以及实现 Deque 的类 LinkedList 和 ArrayDeque。
参考文档