映射

Java 的数据类型与异常

Jim White

Java Developer

Map 是查找表

  • Map 充当查找表数据结构
    • 在特定"键"处存储"值"
    • 用"键"取回对应"值"
  • 示例:打电话给医生诊所
    • 他们用姓名/生日(键)查找健康档案(值对象)

映射充当查找结构,如致电诊所时用姓名和生日查找你的健康档案

Java 的数据类型与异常

Map 接口

  • Map 接口定义键/值对的操作
    • 如何在指定键处存储(put)一个值
    • 如何从 Map 中"移除"该键的值
    • 如何按键取回值
  • 多种 Map 实现,行为相近
    • 常用实现是 HashMap
1 详情见 https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html
Java 的数据类型与异常

HashMap 的键和值

Map 或 HashMap 的键和值可以相同或不同类型

Java 的数据类型与异常

构造 HashMap

HashMap<Integer, String> map = new HashMap<Integer, String>();
  • HashMap 的泛型构造函数需要两个类型

    • 第一个类型 = 键类型

      HashMap 的第一个泛型参数用于键

    • 第二个类型 = 值类型

      HashMap 的第二个泛型参数用于值

在泛型中指定键和值类型,用于键和值的数据类型

  • 需要导入 java.util.HashMap
Java 的数据类型与异常

HashMap 方法

  • .put(key,value) 向表中添加键/值对
  • .remove(key) 删除该键对应的键/值对
  • .get(key) 取出该键对应的值
import java.util.HashMap
...
HashMap<Integer, String> map
    = new HashMap<Integer, String>();
map.put(0, "Jim");
map.put(1, "James");
map.put(3, null);
map.put(4, "James");
map.remove(0);
System.out.println(map);
{1=James, 3=null, 4=James}
String nickname = map.get(1);
System.out.println(nickname);
James
Java 的数据类型与异常

Collections

  • java.util.Collections 是辅助类
  • 用于排序、填充、复制、搜索等
    • 仅包含 static 方法
1 参见 https://docs.oracle.com/en/java/javase//21/docs/api/java.base/java/util/Collections.html
Java 的数据类型与异常

Collection 方法

  • List 添加多个对象
    • addAll(List list, Object a, b, ...)
  • 返回集合中某对象的计数
    • frequency(Collection c, Object o)
  • 反转 List 中对象顺序
    • reverse(List list)
  • List 中对象排序
    • sort(List list)
  • 用同一对象替换 List 中所有元素
    • fill(List a, Object o)
ArrayList<String> x = new ArrayList<String>();
Collections.addAll(x,
    "milk", "bread", "eggs", "milk");
System.out.println(x);

int cnt = Collections.frequency(x, "milk"); System.out.println(cnt);
Collections.reverse(x); System.out.println(x);
Collections.sort(x); System.out.println(x);
Collections.fill(x, "sugar"); System.out.println(x);
[milk, bread, eggs, milk]

2
[milk, eggs, bread, milk]
[bread, eggs, milk, milk]
[sugar, sugar, sugar, sugar]
Java 的数据类型与异常

Arrays

  • 有时需要把数组(如 int[])转换为 List
    • Java 数组不可变长,可能需要增/减元素
    • List 功能更强(搜索、排序等)
  • java.util.Arrays 也是辅助类
    • 可将 Java 数组转换为 List
Java 的数据类型与异常

Arrays 示例

String[] arrayCountries = {"France", "Japan", "Brazil", "Egypt", "China"};
List<String> countries = Arrays.asList(arrayCountries);
System.out.println(countries);
[France, Japan, Brazil, Egypt, China]
Java 的数据类型与异常

Passons à la pratique !

Java 的数据类型与异常

Preparing Video For Download...