📜  Java Map中keySet()和entrySet()方法的区别(1)

📅  最后修改于: 2023-12-03 14:42:15.239000             🧑  作者: Mango

Java Map中keySet()和entrySet()方法的区别

在Java的Map接口中,有两个常用的方法keySet()和entrySet(),它们分别返回Map中的键集和键值对集合。这两个方法在功能上有所不同,下面将详细介绍它们的区别。

keySet()方法

keySet()方法返回一个Set集合,其中包含Map中所有的键。这个Set集合可以用来遍历Map中的所有键,也可以用来判断某个键是否存在于Map中。以下是keySet()方法的一些特点:

  1. 返回值类型为Set<K>,其中K是Map中键的类型。
  2. Set集合不允许包含重复的键。
  3. 当对Set集合进行修改时,会直接修改原Map中的键集。
  4. keySet()方法的时间复杂度为O(1)。

下面是使用keySet()方法遍历Map的示例代码:

Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
map.put("key2", 2);
map.put("key3", 3);

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

entrySet()方法返回一个包含Map中所有键值对的Set集合。这个Set集合可以用来遍历Map中的所有键值对,也可以用来对键值对进行修改或删除操作。以下是entrySet()方法的一些特点:

  1. 返回值类型为Set<Map.Entry<K, V>>,其中KV分别是Map中键和值的类型。
  2. Set集合中的元素类型为Map.Entry<K, V>,表示一个键值对。
  3. Set集合不允许包含重复的键值对。
  4. 当对Set集合进行修改时,会直接修改原Map中的键值对。
  5. entrySet()方法的时间复杂度为O(1)。

下面是使用entrySet()方法遍历Map的示例代码:

Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
map.put("key2", 2);
map.put("key3", 3);

Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
    String key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key + " : " + value);
}
区别总结

keySet()方法返回的是Map中所有的键的集合,可以用来遍历键,但无法直接获取对应的值。而entrySet()方法返回的是Map中所有的键值对的集合,可以用来遍历键值对,并且可以通过Entry对象获取键和值。

使用keySet()方法遍历Map时,需要通过键获取值,效率稍低。而使用entrySet()方法遍历Map时,可以直接获取到键值对,效率较高。因此,在只需要遍历Map中的键时,可以使用keySet()方法;在需要遍历键值对或对键值对进行修改时,应使用entrySet()方法。