[解決済み】Stream<T>がIterable<T>を実装していないのはなぜですか?
2022-03-30 19:15:56
質問
Java 8 では、クラス ストリーム<T> というメソッドがあり、不思議なことに
Iterator<T> iterator()
ということは、インターフェイス イテラブル<T> はまさにこのメソッドを要求しているのですが、そうではありません。
foreachループを使ってStreamを反復処理する場合、次のようにしなければなりません。
public static Iterable<T> getIterable(Stream<T> s) {
return new Iterable<T> {
@Override
public Iterator<T> iterator() {
return s.iterator();
}
};
}
for (T element : getIterable(s)) { ... }
何か見逃していませんか?
どのように解決するのですか?
すでに同じ質問をされています メーリングリストに ☺. 主な理由は、Iterableは再反復可能なセマンティックを持ち、一方Streamはそうではないからです。
<ブロッククオート
というのが主な理由だと思います。
Iterable
は再利用可能であることを意味するのに対し
Stream
は一度しか使用できないもので、どちらかというと
Iterator
.
もし
Stream
拡張
Iterable
を受け取った場合、既存のコードは驚くかもしれません。
Iterable
を投げてくるので
Exception
は
を行った場合、2回目は
for (element : iterable)
.
関連
-
[解決済み] Pythonで、あるオブジェクトが反復可能かどうかを判断するにはどうしたらいいですか?
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
-
[解決済み] Java 8 JDK を使用して、Iterable を Stream に変換する
-
[解決済み】Iterable<T>がstream()とparallelStream()メソッドを提供しないのはなぜですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] Javaでdoubleをfloatに変換する
-
[解決済み] Java 8 Iterable.forEach() vs foreachループ
-
[解決済み] Java 8 JDK を使用して、Iterable を Stream に変換する
-
[解決済み】Iterable<T>がstream()とparallelStream()メソッドを提供しないのはなぜですか?
-
[解決済み】なぜJava Streamsはワンスオフなのですか?
-
[解決済み】Java 8:ストリームで例外をスローするメソッドを操作するにはどうすればよいですか?