質問: data.stream().findAny(); System.out.println(result1); ``` なぜか毎回 Optional[a] となり、ランダムに"b" や "c" を取得出来ません。 わかる方いらっしゃいますか?
回答: 単にfindAnyの使い方を間違えているからです。 > > **Optional findAny()** > > ストリームの一部の要素を記述するOptionalを返します。ストリームが空の場合は空のOptionalを返します。 > > これは短絡終端操作です。 > > > この操作の動作は明らかに非決定論的です。ストリームの任意の要素を自由に選択できます。 これは、並列処理でのパフォーマンスを最大化できるようにするためです。**デメリットは、同じソースに対して呼び出すたびに、違う結果が返される可能性がある点です。** (安定した結果が必要な場合は、かわりにfindFirst()を使用してください。) > > > 引用元: Stream (Java SE 10 & JDK 10 ))、**太字**は引用者。 『呼び出すたびに、違う結果が返される可能性がある』のであって、 『呼び出すたびに、違う結果が返される保証がある』わけではありません。