Java を使用してリストを逆順に実行する必要があります。
つまり、これは次のように転送されます。
for(String string: stringList){
//...do something
}
逆順に文字列リストを反復処理する方法はありますか?それぞれ構文?
明確にするために:リストを逆順に反復する方法は知っていますが、(好奇心から)それを逆順に行う方法を知りたいです。それぞれスタイル。
ベストアンサー1
Collections.reverse メソッドは、実際には元のリストの要素を逆の順序でコピーした新しいリストを返すため、元のリストのサイズに関しては O(n) のパフォーマンスになります。
より効率的な解決策として、リストの逆ビューを Iterable として表示するデコレータを作成することもできます。デコレータによって返されるイテレータは、デコレートされたリストの ListIterator を使用して、逆の順序で要素を調べます。
例えば:
public class Reversed<T> implements Iterable<T> {
private final List<T> original;
public Reversed(List<T> original) {
this.original = original;
}
public Iterator<T> iterator() {
final ListIterator<T> i = original.listIterator(original.size());
return new Iterator<T>() {
public boolean hasNext() { return i.hasPrevious(); }
public T next() { return i.previous(); }
public void remove() { i.remove(); }
};
}
public static <T> Reversed<T> reversed(List<T> original) {
return new Reversed<T>(original);
}
}
次のように使用します:
import static Reversed.reversed;
...
List<String> someStrings = getSomeStrings();
for (String s : reversed(someStrings)) {
doSomethingWith(s);
}