Java 容器类

  • 程序就是算法加数据结构,Java 程序中数据结构的实现利用到了各种各样的容器类(Java Collection),容器以其操作灵活、功能强大成为构建程序数据结构时的主要选择。

1、容器类

  • 容器是一个将多个元素组合到一个单元的对象,是代表一组对象的对象,容器中的对象成为它的元素。容器适用于处理各种类型的对象的聚集,例如存储、获取、操纵聚合数据,以及聚合数据的通信。容器只保存 Object 型的引用,这是所有类的基类,因此容器可以保存任何类型的对象。

1.1 容器框架

  • 容器框架从宏观角度描述了一个“容器”的世界,告诉我们在 Java 的容器世界中有哪些“容器”、它们之间的关系如何、它们是什么样子、如何使用等。总之,容器框架就是一个用于表示操作集合的统一的体系结构。

  • 容器框架包含以下元素

    • 接口:它们代表容器类型的抽象数据类型。整个 Java 容器类的基础是容器接口(例如 Collection、Map 等接口),而不是类。使用接口的最大好处在于将容器的实现与容器的接口分开,这就意味着你可以使用相同的方法访问容器而不用关心容器是由什么样的数据结构实现的,即接口允许操作容器和不涉及容器所代表的细节。在面向对象的语言中,这些接口一般组成一个层次结构。

    • 实现:它们是容器接口的具体实现。

    • 算法:它们是在实现集合接口对象上执行运算的方法,如搜索和排序。这些算法被称为多态的,也就是说,相同的方法可以用于处理某种接口的许多种不同的实现,算法就是可重用的功能。

  • 核心容器接口(Core Collection Interface)封装不同类型的容器,这些接口允许独立地操作容器而不涉及容器所代表的细节。核心容器接口是 Java 容器接口框架的基础。HashSet、TreeSet、ArrayList、LinkedList、HashMap 和 TreeMap 是最为常用的 6 种容器实现。

1.2 容器接口的分类

  • 根据容器所包含的对象的不同可以容器接口可以分为 Collection 和 Map 两大类

    • 实现 Collection 接口的容器实现是一个包含孤立元素的对象集合。
    • 实现 Map 接口的容器实现是一个包含成对元素的对象集合。

1.2.1 Collection 接口定义

  • Collection 代表一组对象,这些对象称为它的元素。Collection 是容器继承树中的顶层接口,作为接口它定义了 15 个方法,但没有提供具体实现。
接口方法 解释说明
// Query Operations
int size(); 返回容器中元素的数目
boolean isEmpty(); 容器中没有元素时返回 true
boolean contains(Object o); 如果容器已持有参数则返回 true
Iterator iterator(); 返回一个 Iterator,可以用来遍历容器中的元素
Object[] toArray(); 返回一个数组,包含容器中的所有元素
T[] toArray(T[] a); 返回一个数组,包含容器中的所有元素,其类型与 a 的类型相同
// Modification Operations
boolean add(E e); 确保容器持有此参数,如果没有将此参数添加进容器则返回 false。
boolean remove(Object o); 如果参数在容器中,则移除此元素的一个实例,如果做了移除动作则返回 true
// Bulk Operations
boolean containsAll(Collection<?> c); 如果容器持有参数中的所有元素则返回 true
boolean addAll(Collection<? extends E> c); 添加参数中的所有元素,只要添加了任意元素就返回 true
boolean removeAll(Collection<?> c); 移除参数中的所有元素,只要有移除动作发生就返回 true
boolean retainAll(Collection<?> c); 只保存参数中的元素,只要 Collection 发生了改变就返回 true
void clear(); 移除容器中的所有元素
// Comparison and hashing
boolean equals(Object o); 比较本容器与给定对象是否相等,如相等则返回 true
int hashCode(); 返回对象的 hash 码

1.2.2 Map 接口定义

  • Map 是一个将键映射到值的对象,映射不能包含重复的键,即每个键最多可以映射到一个值,这种映射类似于数学中的函数。
接口方法 解释说明
// Query Operations
int size(); 返回容器中元素的数目
boolean isEmpty(); 容器中没有元素时返回 true
boolean containsKey(Object key); 如果容器已持有参数键值则返回 true
boolean containsValue(Object value); 如果容器已持有参数值则返回 true
V get(Object key); 取得键值所对应的值
// Modification Operations
V put(K key, V value); 向容器添加一个键值对
V remove(Object key); 如果键值参数在容器中,则移除此参数值对应的键值对实例
// Bulk Operations
void putAll(Map<? extends K, ? extends V> m); 添加参数中的所有键值对元素
void clear(); 移除容器中的所有元素
// Views
Set keySet(); 返回 Map 中包含的键值 Set
Collection values(); 返回 Map 中所有的值的 Collection
Set<Map.Entry<K, V>> entrySet(); 返回 Map 中包含的键值对的 Set
// Comparison and hashing
boolean equals(Object o); 比较本容器与给定对象是否相等,如相等则返回 true
int hashCode(); 返回对象的 hash 码

2、集合容器 Set

3、列表容器 List

4、Map 容器

5、迭代器

文章目录
  1. 1. 1、容器类
    1. 1.1. 1.1 容器框架
    2. 1.2. 1.2 容器接口的分类
      1. 1.2.1. 1.2.1 Collection 接口定义
      2. 1.2.2. 1.2.2 Map 接口定义
  2. 2. 2、集合容器 Set
  3. 3. 3、列表容器 List
  4. 4. 4、Map 容器
  5. 5. 5、迭代器
隐藏目录