JavaのStream APIは、インデックスに基づいた操作を直接サポートしていません。しかし、IntStream
とmapToObj
を組み合わせることで、インデックスを取得することが可能です。
以下に、リストから特定の値のインデックスを取得する例を示します。
List<String> list = Arrays.asList("a", "b", "c", "d", "e");
String target = "c";
OptionalInt indexOpt = IntStream.range(0, list.size())
.filter(i -> target.equals(list.get(i)))
.findFirst();
if (indexOpt.isPresent()) {
System.out.println("Index of " + target + " is: " + indexOpt.getAsInt());
} else {
System.out.println(target + " is not in the list.");
}
このコードは、IntStream.range
を使用してリストのインデックスに対応するストリームを作成し、フィルタを適用して目的の値のインデックスを探しています。findFirst
は最初に見つかったインデックスを返します。
ただし、この方法はリストが大きい場合には効率が良くないため、パフォーマンスが重要な場合は他の方法を検討したほうが良いかもしれません。