为什么map.keyset()返回set视图但map.values()返回Java中的集合?

时间:2014-01-03 21:15:04

标签: java collections map hashmap keyset

这个问题更多是关于Java开发人员的设计实现。我想知道(如果有任何重要原因我无法想到)为什么Keyset()会返回一个集合视图但values()会返回Collection-view。为什么不将Values()作为ValueSet返回set-view。如果需要,我可以投射设置,但为什么选择它的方式。

这可能有助于决定在构建自定义数据时使用哪些数据结构。

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

Collection <Integer> i = map.values();
Set<String> s = map.keySet();

1 个答案:

答案 0 :(得分:11)

根据定义,Map的键形成Set,即唯一键的集合。但是,Map的值可以是重复的。因此,Map中的不同键可以具有相同的值。