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。 |
将在下一篇文章 记录这些集合父类接口的实现类。