复制代码代码如下:
public static void main(String args[]) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("а", "А");
map.put("б", "Б");
map.put("c", "C");
// набор ключей
Iterator<String> итератор = map.keySet().iterator();
в то время как (итератор.hasNext()) {
Строковый ключ = iterator.next();
Строковое значение = (String) map.get(key);
System.out.println(значение);
}
for (Строковый ключ: map.keySet()) {
Строковое значение = (String) map.get(key);
System.out.println(значение);
}
// набор записей
Iterator<Entry<String, Object>> iterator1 = map.entrySet().iterator();
в то время как (итератор1.hasNext()) {
Строковое значение = (String) iterator1.next().getValue();
System.out.println(значение);
}
for (Entry<String, Object> запись: map.entrySet()) {
Строковое значение = (String) вход.getValue();
System.out.println(значение);
}
//
for (Object str: map.values()) {
System.out.println(str);
}
}
关于效率问题:
Использование HashMap
同时遍历key和value时, keySet与entrySet方法的性能差异取决于k ey的具体情况,如复杂度(复杂对象)、离散度、冲突率等。换言之,取决于HashMap Значение и значение, набор записей, ключ и значение, значение и ключ. Используйте HashMap, value, entrySet, EntrySet.优势就会体现出来。例如上述对比测试中,当key是最简单的数值字符串时,keySet可能反而会更高效,耗时比entrySet少10%。总体来说还是推荐使用entrySe t。因为当key很简单时,其性能或许会略低于keySet,但却是可控的,而随着key的复杂化, entrySet的优势将会明显体现出来。当然,我们可以根据实际情况进行选择
只遍历key时, keySet方法更为合适, EntrySet将无用的value也给取出来了,浪费了性能和空间。在上述测试结果中,keySet比entrySet方法耗时少23%。
只遍历value, значения, vlaues, keySet, keySet.
如果你使用TreeMap
同时遍历key和value时,与HashMap不同,entrySet的性能远远高于keySet, TreeMap的查询效率决定的,也就是说,TreeM ap, значение, значение, значение, значение entrySet, значение, ключ, ключ. value, EntrySet, TreeMap.