リストに存在するオブジェクトが何番目=インデックスを求める方法、Java8 Stream で求める。
見つからない場合は、-1 が返れば良しとする。という要求で、サンプルを書くと。。。
List<String> list = Arrays.asList("a", "b", "c", "d", "e", "f"); /* このリストで、"c" のインデックスを求める。 */ int index = IntStream.range(0, list.size()).filter(i->list.get(i).equals("c")).findAny().orElse(-1); System.out.println("Index = " + index );
結果は、
Index = 2
になる。
ちょっとこの方法が気に入らなくなったので、Integer 型で、見つからない場合は、null というルールで書き直す。
AtomicInteger atomicInt = new AtomicInteger(-1); Integer index = list.stream().peek(e->atomicInt.incrementAndGet()) .filter(e->e.equals("c")).findFirst().map(e->atomicInt.get()).orElse(null);
peek メソッドは前から何につかえばよいのだろうと思っていたが、こういう時に使うといいみたいだ。