Stream でListの中で特定要素があるインデックスを求める

完璧=普遍的とは言えないが、、
例)

List<String> list = Arrays.asList("a", "b", "c", "d", "e");
int findIndex =
IntStream.range(0, list.size()).map(i->list.get(i).equals("c") ? i : -1).max().orElse(-1);;

でも、2つ以上マッチする場合は、最後のインデックスを取得することになる。
それでなら、

int findIndex =
IntStream.range(0, list.size()).map(i->list.get(i).equals("c") ? i : -1)
.filter(i->i >= 0).min().getAsInt();

これで最初に見つかるインデックスであり、全てのインデックスは、

IntStream.range(0, list.size()).map(i->list.get(i).equals("c") ? i : -1).filter(i->i >= 0)