[解決済み] javaでfor eachループを逆順に行うことはできますか?
2022-04-24 11:25:24
質問
Javaを使ってListを逆順に実行する必要があります。
で、これがフォワードをするところ。
for(String string: stringList){
//...do something
}
を使用して、stringList を逆順に反復する方法はありますか? それぞれ の構文が使えますか?
わかりやすくするために。私はリストを逆順に反復する方法を知っていますが、(好奇心で)それを それぞれ のスタイルになります。
解決方法は?
Collections.reverseメソッドは、実際には元のリストの要素を逆順にコピーした新しいリストを返すので、元のリストのサイズに対してO(n)のパフォーマンスを発揮します。
より効率的な解決策として、List を反転したビューを 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);
}
関連
-
エラー java.util.NoSuchElementException
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] Pythonでリストを逆順にトラバースする
-
[解決済み] Javaで文字列を反転させる
-
[解決済み] Mapを実装し、挿入順序を保持するJavaクラス?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Spring Boot による HTTPS アクセスの設定
-
Dateが型に解決できない問題を解決する
-
をインスタンス化することができません。
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み】javaでリストを逆順で反復処理する。
-
[解決済み] Java LinkedHashMap の最初か最後のエントリを取得する