前回の投稿、
oboe2uran.hatenablog.com
さらに、BiConsumer の処理にしてみます。
public static <T> void eachPrevious(List<T> list, BiConsumer<T, T> consumer){ for(ListIterator<T> it = list.listIterator(); it.hasNext();) { T pre = null; if (it.hasPrevious()) { pre = it.previous(); it.next(); } consumer.accept(it.next(), pre); } }
サンプル
List<String> list = List.of("A", "B", "C", "D"); eachPrevious(list, (t, u)->{ // TODO リスト前の要素 u と、処理する System.out.println("cur="+t+ " pre="+u); });
結果
cur=A pre=null cur=B pre=A cur=C pre=B cur=D pre=C
目的の処理が、BiConsumer で書きやすくなります。