如何使用 JAVA 8 从映射中获取第一个键值?



至于现在我正在做:

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 做到这一点?

我看到你的方法有两个问题:

  • 如果地图为空,它将引发异常
  • 例如,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.

似乎你需要findFirst这里

Optional<Map.Entry<Item, Boolean>> firstEntry =    
processedItem.entrySet().stream().findFirst();

显然,HashMap没有顺序,因此 findFirst 可能会在不同的调用上返回不同的结果。可能更适合您的情况findAny方法。

最新更新