Java集合类 1.体系结构与父类接口介绍

Java集合类 1.体系结构与父类接口介绍

1.集合类体系结构

集合类:可以存储任意类型的对象,并且长度可变。

集合类都位于 java.util 包中。

集合类体系结构包含如图所示的集合接口及其实现类

集合类体系结构

2. Collection接口

从上图中可看出,Collection接口是单列集合类的父接口。其主要子接口包括 List接口Set接口

以下是Collection接口比较重要的一些方法:完整的可自行查看Collection接口源代码或API文档。

返回值类型 方法及其描述
boolean add(E e) 确保此集合包含指定的元素(可选操作)。
boolean addAll(Collection<? extends E> c) 将指定集合中的所有元素添加到这个集合(可选操作)。
void clear() 从这个集合中移除所有的元素(可选操作)。
boolean contains(Object o) 返回 true如果集合包含指定元素。
boolean containsAll(Collection<?> c) 返回 true如果这个集合包含指定集合的所有元素。
boolean equals(Object o) 将指定的对象与此集合进行比较,以进行相等性。
boolean isEmpty() 返回 true如果集合不包含任何元素。
Iterator<E> iterator() 返回此集合中的元素的迭代器。
boolean remove(Object o) 从这个集合中移除指定元素的一个实例,如果它是存在的(可选操作)。
boolean removeAll(Collection<?> c) 删除此集合中包含的所有元素(可选操作)的所有元素(可选操作)。
int size() 返回此集合中的元素的数目。
  • List:元素有序,元素可重复。主要实现类:ArrayList,LinkedList,Vector。
  • Set: 元素无序,元素不重复。主要实现类:HashSet,TreeSet,LinkedHashSet。

List集合除了继承了Collection接口所有方法外,还新增以下常用方法:

boolean add(E e) 将指定的元素到这个列表的末尾(可选操作)。
void add(int index, E element) 在列表中指定的位置上插入指定的元素(可选操作)。
boolean addAll(int index, Collection<? extends E> c) 将指定的集合中的所有元素插入到指定位置的列表中(可选操作)。
E get(int index) 返回此列表中指定位置的元素。
int indexOf(Object o) 返回此列表中指定元素的第一个出现的索引,或-如果此列表不包含元素,或- 1。
int lastIndexOf(Object o) 返回此列表中指定元素的最后一个发生的索引,或-如果此列表不包含元素,或- 1。
E remove(int index) 移除此列表中指定位置的元素(可选操作)。
E set(int index, E element) 用指定元素替换此列表中指定位置的元素(可选操作)。
int size() 返回此列表中元素的数目。
List<E> subList(int fromIndex, int toIndex) 返回一个视图之间的指定 fromIndex,包容,和 toIndex这份名单的部分,独家。

Set接口同样继承自Collection接口,方法与List接口基本一样,可以理解为元素无序且元素不重复的Collection。

3. Map接口

从上图中可看出,Map接口是双列集合类的父接口,即以键值对的形式存储元素。

其主要实现类包括 Hashtable(及其子类Properties) , HashMap (及其子类LinkedHashMap),TreeMap
Map接口中的方法:

Modifier and Type Method and Description
void clear() 从这个映射中移除所有的映射(可选操作)。
default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 试图计算出指定键和当前的映射值的映射(或 null如果没有当前映射)。
default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) 如果指定的键是不是已经与价值相关的(或映射到 null),尝试使用给定的映射功能,进入到这个Map除非 null计算其价值。
default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 如果指定键的值是存在和非空的,尝试计算一个新的映射,给出了键和它当前的映射值。
boolean containsKey(Object key) 返回 true如果这Map包含一个指定的键映射。
boolean containsValue(Object value) 返回 true如果映射到指定的值的一个或多个键。
Set<Map.Entry<K,V>> entrySet() 返回一个 Set视图的映射包含在这个Map。
boolean equals(Object o) 将指定的对象与此映射的相等性进行比较。
default void forEach(BiConsumer<? super K,? super V> action) 在该映射中的每个条目执行给定的操作,直到所有的条目被处理或操作抛出异常。
V get(Object key) 返回指定的键映射的值,或 null如果这个Map不包含的键映射。
default V getOrDefault(Object key, V defaultValue) 返回指定的键映射的值,或 defaultValue如果这个Map不包含的键映射。
boolean isEmpty() 返回 true如果这个Map不包含键值的映射。
Set<K> keySet() 返回一个 Set的关键视图包含在这个Map。
default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) 如果指定的键已与值相关联的值或与空值相关联的,则将其与给定的非空值关联。
V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。
void putAll(Map<? extends K,? extends V> m) 从指定的映射到这个Map(可选操作)复制所有的映射。
default V putIfAbsent(K key, V value) 如果指定的键是不是已经与价值相关的(或映射到 null)将其与给定的值并返回 null,否则返回当前值。
V remove(Object key) 如果存在(可选操作),则从该Map中移除一个键的映射。
default boolean remove(Object key, Object value) 仅当它当前映射到指定的值时,为指定的键移除条目。
default V replace(K key, V value) 仅当它当前映射到某一值时,替换指定的键的条目。
default boolean replace(K key, V oldValue, V newValue) 仅当当前映射到指定的值时,替换指定的键的条目。
default void replaceAll(BiFunction<? super K,? super V,? extends V> function) 将每个条目的值替换为在该项上调用给定函数的结果,直到所有的条目都被处理或函数抛出异常。
int size() 返回这个映射中的键值映射的数目。
Collection<V> values() 返回一个 Collection视图的值包含在这个Map。

将在下一篇文章 记录这些集合父类接口的实现类。