这个问题更多是关于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();
答案 0 :(得分:11)
根据定义,Map
的键形成Set
,即唯一键的集合。但是,Map
的值可以是重复的。因此,Map
中的不同键可以具有相同的值。