java遍历Map元素的十种方法

一、概述

如果我有一个实现Map接口的对象,并且希望遍历接口中包含的每一对,那么遍历该映射的最有效方法是什么?

元素的顺序是否取决于我对接口的特定map实现?

二、详解

我找到了10种遍历的方法(请参见下文)

  1. 使用迭代器Map.Entry

    long i = 0;
    Iterator> it = map.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = it.next();
        i += pair.getKey() + pair.getValue();
    }
    
  2. 使用foreachMap.Entry

    long i = 0;
    for (Map.Entry pair : map.entrySet()) {
        i += pair.getKey() + pair.getValue();
    }
    
  3. 在Java 8使用forEach

    final long[] i = {0};
    map.forEach((k, v) -> i[0] += k + v);
    
  4. 使用keySetforeach

    long i = 0;
    for (Integer key : map.keySet()) {
        i += key + map.get(key);
    }
    
  5. 使用keySet迭代器

    long i = 0;
    Iterator itr2 = map.keySet().iterator();
    while (itr2.hasNext()) {
        Integer key = itr2.next();
        i += key + map.get(key);
    }
    
  6. 使用forMap.Entry

    long i = 0;
    for (Iterator> entries = map.entrySet().iterator(); entries.hasNext(); ) {
        Map.Entry entry = entries.next();
        i += entry.getKey() + entry.getValue();
    }
    
  7. 使用Java 8 Stream API

    final long[] i = {0};
    map.entrySet().stream().forEach(e -> i[0] += e.getKey() + e.getValue());
    
  8. 使用Java 8 Stream API parallel

    final long[] i = {0};
    map.entrySet().stream().parallel().forEach(e -> i[0] += e.getKey() + e.getValue());
    
  9. 使用IterableMapApache Collections

    long i = 0;
    MapIterator it = iterableMap.mapIterator();
    while (it.hasNext()) {
        i += it.next() + it.getValue();
    }
    
  10. 使用Eclipse MutableMap(CS)集合

    final long[] i = {0};
    mutableMap.forEachKeyValue((key, value) -> {
        i[0] += key + value;
    });

如若转载,请注明出处:https://www.javaidea.cn/article/8224.html

(0)
上一篇 2022年2月7日 上午10:03
下一篇 2022年2月7日 上午10:03

相关推荐

发表评论

您的电子邮箱地址不会被公开。