Java8遍历HashMap (普通方法+涉及到lambda表达式和函数式编程)
建立测试用例
HashMap<String, Integer> map = new HashMap<>(16);
map.put("A", 1);
map.put("D", 3);
map.put("F", 4);
map.put("B", 99);
方法一
先得到entrySet 然后通过 iterator接口,for each或者entries.foreach遍历entrySet
Set<Map.Entry<String, Integer>> entries = map.entrySet();
System.out.println("--------------------First----------------------");
Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> next = iterator.next();
System.out.println(next.getKey() + "--->" + next.getValue());
}
System.out.println("--------------------Second----------------------");
for (Map.Entry<String, Integer> m : entries) {
System.out.println(m.getKey() + "--->" + m.getValue());
}
System.out.println("--------------------Third----------------------");
entries.forEach((entry) -> System.out.println(entry.getKey() + "--->" + entry.getValue()));
方法二
先得到keySet然后通过 遍历keyset的方法 遍历key 再通过key取得value
Set<String> keySet = map.keySet();
System.out.println("方法2");
System.out.println("--------------------First----------------------");
Iterator<String> iterset = keySet.iterator();
while (iterset.hasNext()) {
String key = iterset.next();
Integer value = map.get(key);
System.out.println(key + "--->" + value);
}
//另外2种表达参考上面的方法1的两种表达
方法三
直接用map.foreach() 遍历 but 需要实现BiConsumer接口
介绍BiConsumer接口
@FunctionalInterfacepublic
interface BiConsumer<T, U> {
void accept(T t, U u);
*/
/**本接口中的accept先执行,传入的BiConsumer 接口类型的参数,后执行accept*//*
default BiConsumer<T, U> andThen(BiConsumer<? super T, ? super U> after) {
Objects.requireNonNull(after);
return (l, r) -> {
accept(l, r);
after.accept(l, r);
};
}
System.out.println("方法:3");
map.forEach((k,v)-> System.out.println(k+"--->"+v));
方法四
只遍历values 通过map.values()即可
Collection<Integer> values = map.values();
for (Integer integer : values) {
System.out.println(integer);
}