Java进阶-Map 接口常用方法

java.util.Map 接口中常用的方法:

  1. Map 和 Collection 没有继承关系
  2. Map 集合以 key 和 value 的方式存储数据:键值对
    • key 和 value 都是引用数据类型

    • key 和 value 都是存储对象的内存地址

    • key 起到主导的地位,value 是 key 的一个附属品

      img
  3. Map 接口中常用方法:
    • V put(K key, V value) 向 Map 集合中添加键值对

    • V get(Object key) 通过 key 获取 value

    • void clear() 清空 Map 集合

    • boolean containsKey(Object key) 判断 Map 中是否包含某个 key

    • boolean containsValue(Object value) 判断 Map 中是否包含某个 value

    • boolean isEmpty() 判断 Map 集合中元素个数是否为 0

    • Set<K> keySet() 获取 Map 集合所有的 key(所有的键是一个 set 集合)

    • V remove(Object key) 通过 key 删除键值对

    • int size() 获取 Map 集合中键值对的个数

    • Collection<V> values() 获取 Map 集合中所有的 value,返回一个 Collection

    • Set<Map.Entry<K, V>> entrySet() 将 Map 集合转换成 Set 集合

      • 假设现在有一个 Map 集合,如下所示
      • 【注意:Map 集合通过 entrySet() 方法转换成的这个 Set 集合,Set 集合中元素的类型是 Map.Entry<K, V>
      • Map.Entry 和 String 一样,都是一种类型的名字,只不过:Map.Entry 是静态内部类,是 Map 中的静态内部类】
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      map1 集合对象
      key value
      -----------------------
      1 zhangsan
      2 lisi
      3 wangwu
      4 zhaoliu

      Set set = map1.entrySet();
      set 集合对象
      1=zhangsan
      2=lisi
      3=wangwu
      4=zhaoliu

      // 演示
      Set<MyMap.MyEntry<Integer, String>> set = new HashSet<>();
      class MyMap {
      public static class MyEntry<K, V> {

      }
      }

方法测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class MapTest01 {

public static void main(String[] args) {
// 创建 Map 集合对象
Map<Integer, String> map = new HashMap<>();
// 向 Map 集合中添加键值对
map.put(1, "zhangsan");
map.put(2, "lisi");
map.put(3, "wangwu");
map.put(4, "zhaoliu");

// 通过 key 获取 value
String value = map.get(2);
System.out.println(value); // lisi

// 获取键值对的数量
System.out.println("键值对的数量:" + map.size()); // 4

// 通过 key 删除某个 key-value
map.remove(2);
System.out.println("键值对的数量:" + map.size()); // 3

// 判断是否包含某个 key
// contains 方法底层调用的都是 equals 进行比对,所以自定义的类型需要重写 equals 方法
System.out.println(map.containsKey(4)); // true

// 判断是否包含某个 value
System.out.println(map.containsValue("zhangsan")); // true

// 获取所有的 value
Collection<String> values = map.values();
for (String s : values) {
System.out.println(s);
}

// 清空 map 集合
map.clear();
System.out.println("键值对的数量:" + map.size()); // 0

// 判断是否为空
System.out.println(map.isEmpty()); // true
}
}