[解決済み] 配列からストリームを作成する方法を教えてください。
質問
現在、配列からストリームを作成する必要がある場合、私は以下のようにしています。
String[] array = {"x1", "x2"};
Arrays.asList(array).stream();
配列からストリームを作成する直接的な方法はありますか?
どのように解決するのですか?
Arrays.streamを使用することができます。
Arrays.stream(array);
また
Stream.of
を使うこともできます。
public static<T> Stream<T> of(T... values) {
return Arrays.stream(values);
}
ただし
Stream.of(intArray)
は
Stream<int[]>
一方
Arrays.stream(intArr)
は
IntStream
型の配列を渡すと
int[]
. つまり,プリミティブ型では,2つのメソッドの違いを簡単に観察することができます。
int[] arr = {1, 2};
Stream<int[]> arr1 = Stream.of(arr);
IntStream stream2 = Arrays.stream(arr);
プリミティブ配列を
Arrays.stream
に渡すと、以下のコードが実行されます。
public static IntStream stream(int[] array) {
return stream(array, 0, array.length);
}
で、プリミティブ配列を
Stream.of
に渡すと、以下のコードが実行されます。
public static<T> Stream<T> of(T t) {
return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
}
したがって、異なる結果を得ることができます。
更新
: によって言及されたように
スチュアート・マークス
コメント
のサブレンジのオーバーロードは
Arrays.stream
を使うのが望ましいです。
Stream.of(array).skip(n).limit(m)
を使うのが望ましいです。前者はSIZEDストリームになるのに対し、後者はそうならないからです。その理由は
limit(m)
はサイズが m か m 未満か分からないのに対して
Arrays.stream
は範囲チェックを行い、ストリームの正確なサイズを知っています。
によって返されるストリームの実装のソースコードを読むことができます。
Arrays.stream(array,start,end)
ここで
で返されるストリームの実装に対して
Stream.of(array).skip().limit()
は
このメソッド
.
関連
-
Javaクラスローダーにソースコードから潜り込む
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] JavaScriptで配列を空にするにはどうしたらいいですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] 1...N を含む配列の作成方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
をインスタンス化することができません。
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
[解決済み] 配列からArrayListを作成する