JavaのListの繰り返しで一番最後の要素だけ処理を変えたい

Javaのリストのループは拡張for文が書きやすくて便利ですが、拡張for文ではインデックスを簡単に得られないので、繰り返しの一番最後の要素だけあれこれしたい…といった泥臭い書き方に対応できません。

大人しく、一時変数を使って最後だけif文で分けてもいいのですが、Javaではイテレータを使ったループもありますね。それで一番最後の要素だけ処理を変える書き方は以下のようになります。

  • イテレータを使った書き方
        for (Iterator<Integer> iterator = arr.iterator(); iterator.hasNext();) {
          Integer element = iterator.next();
          System.out.println(element);
          if (!iterator.hasNext()) {
            System.out.println(Integer.toString(element) + " end!");
          }
        }