java - 如何使用 JAVA 8 从 map 中获取第一个键值?

标签 java java-8 iterator java-stream

至于现在我在做什么:

Map<Item, Boolean> processedItem = processedItemMap.get(i);

        Map.Entry<Item, Boolean> entrySet = getNextPosition(processedItem);

        Item key = entrySet.getKey();
        Boolean value = entrySet.getValue();


 public static Map.Entry<Item, Boolean> getNextPosition(Map<Item, Boolean> processedItem) {
        return processedItem.entrySet().iterator().next();
    }

有没有更简洁的方法用 java8 来做到这一点?

最佳答案

我发现你的方法有两个问题:

  • 如果 map 为空会抛出异常
  • 例如,
  • HashMap 没有顺序 - 所以您的方法实际上更像是 getAny() 而不是 getNext() .

对于流,您可以使用:

//if order is important, e.g. with a TreeMap/LinkedHashMap
map.entrySet().stream().findFirst();

//if order is not important or with unordered maps (HashMap...)
map.entrySet().stream().findAny();

返回一个Optional

关于java - 如何使用 JAVA 8 从 map 中获取第一个键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43627091/

相关文章:

c++ - QGraphicsScene 中元素的迭代器

php - 在 Laravel 5 Collection 中,如何返回对象数组而不是数组数组?

德尔福XE2 : iterate actions in a TAcionManager object

java - 使用 java 创建 XML 文件

java - 如何在 gradle 测试中启用有用的 NullPointerExceptions

java - Junit 测试不适用于 Drools 5.4.0.Final 和 JDK 8

java - 如何从 String 对象取回 Java 模型对象?

java - 使用 Lambda 解引用 Int 值

c# - 了解 MVC 模式

Java 方法不等待 BufferedReader 输入?