これを、先頭だけ Consumer にして、BiConsumer で if 文を書く必要をなくす。
public static <T> void eachPrevious(List<T> list, Consumer<T> first, BiConsumer<T, T> consumer){ ListIterator<T> it = list.listIterator(); first.accept(it.next()); while(it.hasNext()) { T pre = it.previous(); it.next(); consumer.accept(it.next(), pre); } }
List<String> list = List.of("A", "B", "C", "D"); eachPrevious(list, t->{ System.out.println("first : "+t); }, (t, u)->{ System.out.println("cur="+t+ " pre="+u); });
結果は、、
first : A cur=B pre=A cur=C pre=B cur=D pre=C