1

ArrayList を取得します。

ArrayList logs;
for(Logs log : getLogs()){           
    logs.add(log.getName();        
}

このリストを逆順に取得するにはどうすればよいですか?

4

6 に答える 6

5

reverseクラスのメソッドを使用してCollections、リストを逆にします。これはリスト自体に影響することに注意してください。

ArrayList logs = new ArrayList(); //Initialize this list or your
                                  //code won't compile.

for(Logs log : getLogs()){           
    logs.add(log.getName();        
}

Collections.reverse(logs);

新しいリストが必要な場合は、新しいリストを作成し、を使用してすべての要素をリストに追加しaddAll、最後にそのリストを逆にします。

于 2013-02-20T19:11:02.680 に答える
4
for ( int i = logs.size() - 1; i >= 0; --i )
    // do something with logs.get( i )
    ;

逆の順序で繰り返すことができるものを逆にする時間を無駄にしないでください。

更新:listIteratorは逆の順序で使用することもでき、より一般的な解決策です。

for ( ListIterator< Logs > lit = logs.listIterator( logs.size() ); lit.hasPrevious(); )
    // do something with lit.previous()
    ;
于 2013-02-20T19:15:39.737 に答える
4

を使ってみてくださいadd(int index, E element)

ArrayList logs;
for(Logs log : getLogs()){           
    logs.add(0,log.getName());        
}

これにより、要素がリストの最後に追加されるのではなく、常に最初の要素として挿入されるため、リストが逆になります。

于 2013-02-20T19:12:55.270 に答える
2

Java 5の時点で(少なくとも、おそらくもっと早く)、Collectionsライブラリでこれがサポートされています。

 Collections.reverse(logs);
于 2013-02-20T19:12:50.717 に答える
0

コレクションを元に戻す必要はなく、パフォーマンスが低下する可能性があります(サイズによって異なります)。最も自然なJDKの方法は、次のことを行うことlistIteratorです。

for (ListIterator<String> it = list.listIterator(list.size()); it.hasPrevious();) {
  ...
}
于 2013-02-20T19:19:45.797 に答える