1. 概述

在这个教程中,我们将讨论Java中Map接口的三个方法:keySet()entrySet()values()。这些方法分别用于获取键集、键值对集合和值集合。

2. Map初始化

虽然我们可以在实现Map接口的任何类上使用这些方法,如HashMapTreeMapLinkedHashMap,但这里我们将与HashMap一起工作。

让我们创建并初始化一个键类型为String,值类型为IntegerHashMap

Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);

3. keySet()方法

keySet()方法返回Map中的键的Set

keySet()方法应用到Map上,并将其存储在Set变量actualValues中:

Set<String> actualValues = map.keySet();

现在,确认返回的Set的大小为2:

assertEquals(2, actualValues.size());

进一步观察,我们可以看到返回的Set包含了Map的键:

assertTrue(actualValues.contains("one"));
assertTrue(actualValues.contains("two"));

4. entrySet()方法

entrySet()方法返回键值对的集合。 这个方法不接受参数,返回类型为Set<Map.Entry>

entrySet()方法应用到Map上:

Set<Map.Entry<String, Integer>> actualValues = map.entrySet();

如我们所见,actualValues是一个Map.Entry对象的Set

Map.Entry是一个静态接口,它包含了键和值。内部有两个实现——AbstractMap.SimpleEntryAbstractMap.SimpleImmutableEntry

同样,确认返回的Set的大小为2:

assertEquals(2, actualValues.size());

此外,我们能看到返回的Set包含了Map的键值对:

assertTrue(actualValues.contains(new SimpleEntry<>("one", 1)));
assertTrue(actualValues.contains(new SimpleEntry<>("two", 2)));

这里,我们选择Map.Entry接口的AbstractMap.SimpleEntry实现进行测试。

5. values()方法

values()方法返回Map中的值的Collection 这个方法不接受参数,返回类型为Collection

values()方法应用到Map上,并将其存储在Collection变量actualValues中:

Collection<Integer> actualValues = map.values();

现在,验证返回的Collection的大小:

assertEquals(2, actualValues.size());

进一步观察,我们可以看到返回的Set包含了Map的值:

assertTrue(actualValues.contains(1));
assertTrue(actualValues.contains(2));

6. 总结

在这篇文章中,我们讨论了Map接口的keySet()entrySet()values()方法。

如往常一样,完整的源代码可以在GitHub上找到。