1. ホーム

[解決済み】javaでリストを逆順で反復処理する。

2022-04-02 09:02:57

質問

ジェネリックを使用するために、コードの一部を移行しています。その理由の1つは、インデックスを追跡したり、明示的なイテレータを使用したりするよりも、forループがはるかにクリーンであることです。

約半数のケースで、リスト(ArrayList)は今日インデックスを使用して逆順に反復されています。

誰かこれをよりきれいに行う方法を提案してくれませんか (私は indexed for loop コレクションを扱う場合)、動作はするのですが?

 for (int i = nodes.size() - 1; i >= 0; i--) {
    final Node each = (Node) nodes.get(i);
    ...
 }

JDK以外の新しい依存関係を追加することができません。

解決方法は?

これを試してみてください。

// Substitute appropriate type.
ArrayList<...> a = new ArrayList<...>();

// Add elements to list.

// Generate an iterator. Start just after the last element.
ListIterator li = a.listIterator(a.size());

// Iterate in reverse.
while(li.hasPrevious()) {
  System.out.println(li.previous());
}