至于现在我在做什么:
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做到这一点?
答案 0 :(得分:13)
我发现你的方法存在两个问题:
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
。
答案 1 :(得分:6)
好像你需要//pseudo:
if(count == 1 ) output state_CONNECTED;
elseif(count > 1) output state_DISCONNECTED;
这里
findFirst
显然 Optional<Map.Entry<Item, Boolean>> firstEntry =
processedItem.entrySet().stream().findFirst();
没有顺序,因此findFirst可能会在不同的调用中返回不同的结果。对于你的案例,可能更合适的方法是HashMap
。