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

bra*_*orm 4 java collections hashmap map keyset

这个问题更多的是Java开发人员的设计实现.我想知道(如果有任何重要的原因我无法想到)为什么Keyset()返回一个set-view但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();
Run Code Online (Sandbox Code Playgroud)

Men*_*ild 11

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