编程红宝书(珍藏版) ava 完金自学手册 第6章容器类简介 程序就是算法加数据结构,Java程序中的的数据 结构的实现利用到了各种各样的容器类(Java Collection),容器以其操作灵活性、功能强大成 为是构建程序数据结构的重要选择。本章就对 Java中的形形色色的容器类进行简介,读者会通 过本章对容器类形成初步的认识,将会学习到什 么是容器、容器的继承关系、容器的分类、容器 的实现、容器的应用。 Q想桃工业出隙社
第6章 容器类简介 • 程序就是算法加数据结构,Java程序中的的数据 结构的实现利用到了各种各样的容器类(Java Collection),容器以其操作灵活性、功能强大成 为是构建程序数据结构的重要选择。本章就对 Java中的形形色色的容器类进行简介,读者会通 过本章对容器类形成初步的认识,将会学习到什 么是容器、容器的继承关系、容器的分类、容器 的实现、容器的应用
编程红宝书(珍藏版) ava 完金自学手册 6.1容器的简介 容器类( Collection)对于新的开发者是最强大的 工具之一,可以大幅提高编程能力。容器是一个 将多个元素组合到一个单元的对象,是代表一组 对象的对象,容器中的对象成为它的元素。容器 适用于处理各种类型的对象的聚集,例如存储 获取、操纵聚合数据,以及聚合数据的通信。所 以容器只保存 Object型的引用,这是所有类的基 类,因此容器可以保存任何类型的对象。 Q想桃工业出隙社
6.1 容器的简介 • 容器类(Collection)对于新的开发者是最强大的 工具之一,可以大幅提高编程能力。容器是一个 将多个元素组合到一个单元的对象,是代表一组 对象的对象,容器中的对象成为它的元素。容器 适用于处理各种类型的对象的聚集,例如存储、 获取、操纵聚合数据,以及聚合数据的通信。所 以容器只保存Object型的引用,这是所有类的基 类,因此容器可以保存任何类型的对象
编程红宝书(珍藏版) ava 完金自学手册 6.1.1容器框架 要想深入理解“容器”的概念需要我们首先理解“容器”的宏观 框架—一容器框架。容器框架从宏观角度为我们描述了一个“容 器”的世界,告诉我们在Java的容器世界中有哪些“容器”、它 们之间的关系如何、它们是什么样子、它们如何使用。总之,容 器框架就是一个用于表示操作集合的统一的体系结构,容器框架 包含以下元素: 接口——它们代表容器类型的抽象数据类型。整个Java容器类的 基础后来是容器接口(例如 Collection,Map等接口),而不是类。 使用接口的最大好处在于将容器的实现与容器的接口分开,这就 意味着你可以使用相同的方法访问容器而不用关心容器是由什么 样的数据结构实现的,即接口允许操作容器和不涉及容器所代表 的细节。在面向对象的语言中,这些接口一般组成一个层次结构 实现一—它们是容器接口的具体实现。 算法——它们是在实现集合接口对象上执行运算的方法,如搜索 和排序。这些算法被称为多态的,也就是说,相同的方法可以用 于处理某种接口的许多种不同的实现,算法就是可重用的功能。 Q想桃工业出隙社
6.1.1 容器框架 • 要想深入理解“容器”的概念需要我们首先理解“容器”的宏观 框架——容器框架。容器框架从宏观角度为我们描述了一个“容 器”的世界,告诉我们在Java的容器世界中有哪些 “容器”、它 们之间的关系如何、它们是什么样子、它们如何使用。总之,容 器框架就是一个用于表示操作集合的统一的体系结构,容器框架 包含以下元素: • 接口——它们代表容器类型的抽象数据类型。整个Java容器类的 基础后来是容器接口(例如Collection,Map等接口),而不是类。 使用接口的最大好处在于将容器的实现与容器的接口分开,这就 意味着你可以使用相同的方法访问容器而不用关心容器是由什么 样的数据结构实现的,即接口允许操作容器和不涉及容器所代表 的细节。在面向对象的语言中,这些接口一般组成一个层次结构。 • 实现—— 它们是容器接口的具体实现。 • 算法—— 它们是在实现集合接口对象上执行运算的方法,如搜索 和排序。这些算法被称为多态的,也就是说,相同的方法可以用 于处理某种接口的许多种不同的实现,算法就是可重用的功能
编程红宝书(珍藏版) ava 完金自学手册 6.1.2Java容器框架的优势与劣势 Java容器框架的优势体现在以下几个方面: 1.减少编程工作量 2.提高程序的运行速度和质量 3.允许无关的API之间的互操作 4.减少学时和使用新API的难度 5.减少设计新API的工作量 ·6.促进软件重用 Q想桃工业出隙社
6.1.2 Java容器框架的优势与劣势 • Java容器框架的优势体现在以下几个方面: • 1.减少编程工作量 • 2.提高程序的运行速度和质量 • 3.允许无关的API之间的互操作 • 4.减少学时和使用新API的难度 • 5.减少设计新API的工作量 • 6.促进软件重用
编程红宝书(珍藏版) ava 完金自学手册 6.2容器接口的分类 正如图6.2所示,根据容器所包含的对象的不同可 以容器接口可以分为 Collection和Map两大类, 实现 Collection接口的容器实现是一个包含孤立 元素的对象集合,而实现Map接口的容器实现是 个包含成对元素的对象集合 Q想桃工业出隙社
6.2 容器接口的分类 • 正如图6.2所示,根据容器所包含的对象的不同可 以容器接口可以分为Collection 和Map两大类, 实现Collection接口的容器实现是一个包含孤立 元素的对象集合,而实现Map接口的容器实现是一 个包含成对元素的对象集合
编程红宝书(珍藏版) ava 完金自学手册 6.2.1 Collection接口定义与应用 Collection代表一组对象,这些对象称为它的元素。 Collection 是容器继承树中的顶层接口,作为接口它定义了15个方法,但没 有提供具体实现。 Collection接口如下所示: 1 public interface Collection extends Iterablet 2口的基本操作 nt size 4 boolean is Emptyo 5 boolean contains(Object element); 6 boolean add(E elements) 7 boolean remove(object element) 8 Iterator iterator 9 boolean equals(object element 11∥12到16行为Buk操作 12 boolean containsAll(Collections?> c); 13 boolean addAll( Collectionc); 14 boolean removeAll( Collection c);" 15 boolean retainAll( Collection c); 16 void clear 17∥以下为数组操作 18 Objectl toArrayO 19T≥ TI toArray(Ta); Q想桃工业出隙
6.2.1 Collection接口定义与应用 • Collection代表一组对象,这些对象称为它的元素。Collection 是容器继承树中的顶层接口,作为接口它定义了15个方法,但没 有提供具体实现。Collection接口如下所示:
编程红宝书(珍藏版) ava 完金自学手册 6.2.2Map接口定义与应用 Map是一个将键映射到值的对象,映射不能包含重复的键,即每个 键最多可以映射到一个值,这种映射类似于数学中的函数。Map接 口如下所示: 1∥声明map按口 2 public interface Map( 3 int size 0: 4 boolean is Empty 0 5 boolean containsKey(object key); A 6 7 V get(object key);" 8 V puto key, K value); 9 V remove(object key) 10∥ Bulk Operation tAll(Map t) 12 void clear 13∥集合视图 14 public Set key seto 15 public Collection values; 16 public Set > entry seto; 17 /nterface for entry Set elements 18 public interface Entry 19 K getKeyo V getvalue 0 V setvalue(V value) Q想桃工业出隙社
6.2.2 Map接口定义与应用 • Map是一个将键映射到值的对象,映射不能包含重复的键,即每个 键最多可以映射到一个值,这种映射类似于数学中的函数。Map接 口如下所示:
编程红宝书(珍藏版) ava 完金自学手册 6.3集合容器_Set Set是不包含重复元素的 Collection,Set模拟数 学上集合(set)的概念,具有与 Collection完全 样的接口,因此没有任何额外的功能。Set对于 包含非重复,且无排序要求的数据结构非常合适 Q想桃工业出隙社
6.3 集合容器—Set • Set是不包含重复元素的Collection,Set模拟数 学上集合(set)的概念,具有与Collection完全 一样的接口,因此没有任何额外的功能。Set对于 包含非重复,且无排序要求的数据结构非常合适
编程红宝书(珍藏版) ava 完金自学手册 6.3.1Set接口定义与应用 Set接口只包含从 Collection继承的方法,并添加了禁止重复元素这一限 制。Set还在 equals和 hashcode操作上添加了更强的约束,这允许对Set实 例进行有意义的比较一一如果两个Set对象包含相同元素,那么它们是相 等的。Set接口如下所示: 1 public interface Set extends Collection( 2∥各种基本的集合操作 5 boolean contains(object element) olean add(E 7 boolean remove(object element);" 8 Iterator iterator 9 boolean equals(object element). 11∥种判断函数 12 boolean containsAll(Collections?> c); 13 boolean addAll(Collectionc) 4 boolean remove All( Collection c);" 15 boolean retainAll( Collection c); 17∥数组操作 18 Objecto toArrayo: 19 Tl toArray(T[ a); Q想桃工业出隙社
6.3.1 Set接口定义与应用 • Set接口只包含从Collection继承的方法,并添加了禁止重复元素这一限 制。Set还在equals和hashcode操作上添加了更强的约束,这允许对Set实 例进行有意义的比较——如果两个Set对象包含相同元素,那么它们是相 等的。Set接口如下所示:
编程红宝书(珍藏版) ava 完金自学手册 6.3.2Set实现 Set实现被分为通用实现和专用实现。通用实现包 括 HashSet、 TreeSet和 Linkedset,这三个实现包 含在图6.1中;专用实现包括 EnumSet和 CopyonWriteArraySet 1. HashSet ·2. TreeSet 3. LinkedhashSet 4. EnumSet CopyOnWriteArrayset Q 机械工业出版社 China Machine Press
6.3.2 Set实现 • Set实现被分为通用实现和专用实现。通用实现包 括HashSet、TreeSet和LinkedSet,这三个实现包 含在图6.1中;专用实现包括EnumSet和 CopyonWriteArraySet。 • 1.HashSet • 2.TreeSet • 3. LinkedHashSet • 4.EnumSet • 5.CopyOnWriteArraySet