Java遍历HashMap的四种方法三种表达


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);
}

文章作者: Bxan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Bxan !
  目录