📜  Java Map 中 keySet() 与 value() 方法的区别(1)

📅  最后修改于: 2023-12-03 15:15:57.035000             🧑  作者: Mango

Java Map 中 keySet() 与 values() 方法的区别

在 Java 中,Map 接口是一种用于存储键值对的集合类型。其中,keySet()values() 是两个常用的方法,它们都返回 Map 中的值集合。但是,它们之间有一些区别,本文将对它们进行介绍。

keySet() 方法

keySet() 方法返回一个包含 Map 中所有键的 Set 视图。例如,下面的代码演示如何使用 keySet() 获取 Map 中的所有键:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);

Set<String> keySet = map.keySet();
System.out.println(keySet); // 输出 [apple, banana, cherry]

可以发现,keySet() 方法返回的是 Map 中所有键的视图,因此,我们可以很方便地遍历该视图并获取相应的键值对。

values() 方法

values() 方法返回一个包含 Map 中所有值的 Collection 视图。例如,下面的代码演示如何使用 values() 方法获取 Map 中的所有值:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);

Collection<Integer> values = map.values();
System.out.println(values); // 输出 [1, 2, 3]

可以发现,values() 方法返回的是 Map 中所有值的视图,因此,我们可以很方便地遍历该视图并获取相应的键值对。

区别

从上述代码和介绍可以看出,keySet()values() 方法返回的视图类型不同,一个是 Set,一个是 Collection。此外,它们所返回的视图分别包含了 Map 中的键和值。

使用 keySet() 方法,我们可以直接访问 Map 中的键,并通过键来获取相应的值,如下所示:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);

Set<String> keySet = map.keySet();
for (String key : keySet) {
    System.out.println(key + " : " + map.get(key));
}

而使用 values() 方法,我们可以直接访问 Map 中的值,如下所示:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);

Collection<Integer> values = map.values();
for (Integer value : values) {
    System.out.println(value);
}

综上所述,keySet() 方法和 values() 方法都可以用于遍历 Map 中的键值对,但是它们的返回值类型不同,需要根据具体的需求来选择使用。