Java 8には、java.util.stream.Streamおよびjava.util.stream.IntStreamタイプがあります。 java.util.Arraysメソッドバイト配列をIntStreamに変換する最良の方法は何ですか?
IntStream is = Arrays.stream(int[])
しかし短い[]またはchar []、intに各要素を拡大、[]バイトからIntStreamを作るそのような方法を有しています。 byte []からIntStreamを作成するための慣用的な方法がありますか?機能的にバイト配列を操作できますか?
私はもちろん自明のバイトが[] IntStream.Builder手動で[] int型と使用Arrays.stream(INT [])、または使用するように変換することができます:
public static IntStream stream(byte[] bytes) {
IntStream.Builder isb = IntStream.builder();
for (byte b: bytes)
isb.add((int) b);
return isb.build();
}
をどちらもが原因非常に機能的ですソースのコピー。
また、InputStream(またはこの場合はByteArrayInputStream)をIntStreamに変換する簡単な方法はないようですが、これはInputStreamを機能的に処理するのに非常に便利です。 (目立たない欠点?)
効率的でコピーしないより機能的な方法がありますか? InputStream
については
関連するすべての 'byte'は' int'考慮すべき?あるいは、4バイトごとに 'int'と考えるべきでしょうか? –
すべてのバイトがintに拡張されます。たとえば、ファイルまたは他のバイトストリーム内のすべてのバイトのヒストリカルグラムを計算したいとします。 – djb
ストリームAPIを使用してInputStreamからバイトを読み取る理由を教えてください。 InputStreamの読み込みはシーケンシャルなので、以前のメソッドを使用して読み込む方がはるかに高速です。何らかの方法で個々のバイトの順序付きストリームを並列処理できないためです。 InputStreamの並列処理*チャンク*から多くの利点を得るかもしれません... –