今のところ私はやっています:
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でこれを行うためのよりクリーンな方法はありますか?
あなたの方法には2つの問題があります。
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
でしょう。