至于现在我正在做:

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

    09-27 21:33