在 Java 语言里面,如果我们要存放一组对象,通过前面的知识,我们知道 数组 可以满足这样的条件,但是对数组的操作本身有一个限制,它的长度是固定的。
Java 类集合框架正好解决了上面的问题,它就是一个动态的对象数组。对一些实现好的数据结构进行了包装,在使用的时候会非常方便。它不会受数组长度的限制。
Java 类集合框架设计拥有下面特性:
常用的类集合有:Collection、List、Set、Map、Iterator、ListIterator、SortedSet、SotedMap、Queue。
接口 | 描述 |
---|---|
Collection | 存放一组元素,每个元素都是对象的最大父接口。它是一些结合的父接口。 |
List | 是 Collection 接口的子接口,它在 Collection 基础上进行了扩充,里面的内容是允许重复的 |
Set | 是 Collection 接口的子接口,它在 Collection 基础上进行了扩充,里面的内容不允许重复 |
Map | 是存放键值对的最大接口,其他的键值对接口或对象是其子类,以 key-value 形式保存 |
Iterator | 集合的输出接口,从前往后输出集合中的内容 |
ListIterator | 是 Iterator 子类,可以进行从前到后或者从后到前的双向内容输出 |
SortedSet | 集合中存储一个类型元素的排序接口,实现此接口的集合里面里面的元素是有序的,按照自定义规则进行排序 |
SortedMap | 集合里面的键值对的内容是有序的,按照自定义规则对key进行排序 |
Queue | 队列接口,该接口子类可以实现队列操作 |
Collection 接口是所有的单元素结合的父类,它的接口如下:
public interface Collection<E> extends Iterable<E>;
从定义可以看出 Collection 集合使用了 泛型,在使用的时候,我们必须要指定具体的操作类型。Collection 定义了如下方法:
方法 | 描述 |
---|---|
boolean add(E e); | 向集合中添加元素 |
boolean addAll(Collection<? extends E> c); | 向一个结合中添加一个集合 |
void clear(); | 清楚此集合里面的所有元素 |
boolean contains(Object o); | 判断某一个对象是否在集合里面 |
boolean containsAll(Collection<?> c); | 判断某一个结合里面的对象是否在集合里面 |
boolean equals(Object o); | 判断两个对象是否相等 |
int hashCode(); | 获取该集合对应的hash码 |
boolean isEmpty(); | 判断集合是否为空 |
Iterator |
为 Iterator 接口实例化 |
boolean remove(Object o); | 删除指定的对象 |
boolean removeAll(Collection<?> c); | 删除一组对象 |
boolean retainAll(Collection<?> c); | 保存指定的内容 |
int size(); | 获取集合的大小 |
Object[] toArray(); | 将一个集合变为数组 |
指定好返回的对象数组类型 |
Collection 是一个集合,在开发过程中,我们很少直接使用 Collection,而是用它的子接口,List、Set、Queue 和 SortedSet。
Map 接口里面存放的是一对对象,它存储的是键值对,每个元素都是用 “key -> value” 形式。Map 接口如下:
public interface Map<K,V>
从定义可以看出 Map 集合使用了泛型,在使用的时候,我们必须要指定具体的操作类型。Map 定义了如下方法:
方法 | 描述 |
---|---|
void clear() | 清空 Map 集合 |
boolean containsKey(Object key); | 判断指定的 key 是否存在 |
boolean containsValue(Object value); | 判断指定的 value 是否存在 |
Set<Map.Entry<K, V>> entrySet(); | 将 Map 对象转为 Set 集合 |
boolean equals(Object o); | 判断两个对象是否相等 |
V get(Object key); | 根据 key 取值 |
int hashCode(); | 获取对应的 hashmap 的hash 码 |
boolean isEmpty(); | 判断集合是否为空 |
Set |
获取 Map 的所有的key |
V put(K key, V value); | 向集合中添加元素 |
void putAll(Map<? extends K, ? extends V> m); | 将一个 Map 结合添加到另一个 Map 集合里面 |
V remove(Object key); | 根据 key 移除 value |
int size(); | 获取集合的大小 |
Collection |
取出 Map 里面的所有的 value |
集合里面存放的是对象,基本数据类型如果想要存储在集合里面,会进行自动装箱。它封装了一些对数组或者链表或者树等等数据结构的基本操作,让程序员方便调用。