我是Java的新手,但我需要快速掌握一些基础知识,才能使用一些基本的数据结构。
这里有一个我想更好地理解的小例子,即Map.Entry<Integer,String>
部分。
HashMap<Integer,String> my_hashmap = new HashMap<>();
my_hashmap.put(20,"twenty");
my_hashmap.put(30,"thirty");
for (Map.Entry<Integer,String> m:my_hashmap.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
事实证明,我可以省略<Integer, String>
声明,它根本没有任何区别。这种做法不好吗?据我所知,在幕后,这在某种程度上被解释为Object
类型,所以没有问题,但这并没有从使用泛型中受益。我的理解正确吗?谢谢
使用原始类型是不好的做法。
在您的示例中,由于您只是打印每个条目的键和值,因此代码通过编译并工作,因为它使用所有类实现的toString()
方法来打印它们。
另一方面,如果您想打印值为String
的length()
,而不是实际的String
,则需要编写
System.out.println(m.getKey() + " " + m.getValue().getLength());
现在,如果您更改,这将无法通过编译
for (Map.Entry<Integer,String> m:my_hashmap.entrySet())
至
for (Map.Entry m:my_hashmap.entrySet())
因为CCD_ 8不具有CCD_。