Collections 框架的数据结构

Java 的数据类型与异常

Jim White

Java Instructor

什么是框架

  • 框架是一组可复用类型,提供通用功能
    • 类型示例:类、接口
    • 提升应用质量
    • 避免从零开始编写
  • 在 Java 中,框架以一个或多个包提供
  • 框架附带使用规范与规则

框架提供现成代码以实现通用功能

1 Photo by Ashkan Forouzani on Unsplash
Java 的数据类型与异常

Java 类型

Java 中的两类类型

  • 基本类型
    • byte, short, int, long, float, double, char, boolean
  • 引用类型
    • 类(Class)
    • 接口(Interface)
    • 枚举(Enum)
    • 数组(Array)
    • ...
Java 的数据类型与异常

Collections 框架

  • Collections 框架:Java 内置的通用数据结构类型集合
    • 一组用于存储和操作对象集合的类型
  • 位于 java.util
    • 需通过 import 才能使用这些类型
Java 的数据类型与异常

那数组呢?

  • Java 数组可存放一组对象或基本类型
    • Collections 框架提供另一套数据结构
  • 二者各有优缺点
数组 集合
不可变长 动态伸缩(可增可减)
可存基本类型或对象 仅存对象
同质——元素类型必须相同 异质——对象类型可不同
用特殊下标 [] 访问 通过方法访问对象
用特殊初始化语法 {} 使用 new(无特殊初始化语法)
Java 的数据类型与异常

Collections 框架类型

  • Collections 框架分为两类:CollectionMap
    • 由两个接口表示:java.util.Collectionjava.util.Map
    • 二者都有多个实现类
  • 使用 import java.util.*; 可引入任意 Collections 类型

Collections 框架包含两类:Collection 和 Map

Java 的数据类型与异常

Collection

  • Collection 定义多种对象分组方式
    • 通过附加接口细分
  • 有序分组:List
  • 无序分组:Set
  • 先进先出分组:Queue
    • 类似排队办理业务
  • 通过 .add(Object).remove(Object) 修改任意 Collection

Collection 包含 List、Set 和 Map

Java 的数据类型与异常

Map

  • Map 像电话簿或词典
    • 用"键"对象映射到"值"对象
    • 电话簿:姓名 -> 电话号
    • 词典:单词 -> 定义
  • 用键来修改 Map
    • .put(Object key, Object value) 添加条目
    • .remove(Object key) 按键删除
  • 常见实现:HashMap

Map 的工作方式类似电话簿或词典

Java 的数据类型与异常

泛型(Generics)

  • Collection 与 Map 都是"参数化"的
    • 使用 Java 泛型指定所含对象类型
    • 泛型语法:<Class> 参数化类型
      • < > 称为菱形运算符
ArrayList<String> list = new ArrayList<String>();  // 使用泛型构造
Java 的数据类型与异常

泛型与类型安全

  • 泛型提高类型安全
    • 限制 CollectionMap 的元素类型
ArrayList<String> list = new ArrayList<String>();
list.add("hello");  // 添加 String 可以
list.add(new Integer(5));  // 添加 Integer 会导致编译错误
Java 的数据类型与异常

未使用泛型

ArrayList list2 = new ArrayList();  // 合法但未指定类型

list2.add("hello");                 // 可添加任意类型对象
list2.add(new Integer(5));
Java 的数据类型与异常

变量声明与赋值

  • 变量声明与赋值可分开进行
ArrayList<String> list = new ArrayList<String>(); // 单行声明并赋值

ArrayList<String> list2;     // 先声明变量...
list2 = new ArrayList<String>();  // ...再赋值为两条语句
Java 的数据类型与异常

开始练习吧!

Java 的数据类型与异常

Preparing Video For Download...