「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java 8ストリームを効率的に逆転させる方法は?

Java 8ストリームを効率的に逆転させる方法は?

2025-02-06に投稿しました
ブラウズ:553

How to Reverse a Java 8 Stream Efficiently?

java 8ストリーム

を逆転させるJava 8では、ストリームはデータを操作して処理するための強力で簡潔な方法を提供します。 1つの一般的な操作は、ストリームの逆転です。この記事では、これを達成するための2つの方法を調査します。intStreamとオブジェクトのストリームを逆にするための一般的なアプローチを逆にするための特定のソリューション。 intStream、カスタムメソッドを作成して、値の範囲を逆順にマッピングできます。たとえば、-5〜0の範囲のintstreamがある場合、それを逆にすると、ストリーム0から-5が発生します。これは、次のコードを使用して達成できます。 intstream.range(from、to)を返します .map(i-> to -i from -1); }

この方法はボクシングとソートを回避し、より効率的なソリューションをもたらします。 2つのアプローチを使用できます。 1つ目は、ストリーム要素を配列に保存し、逆の順序で読み取ります: @suppresswarnings( "Unchecked") static stream reverse(stream input){ object [] temp = input.toarray(); return(stream )intstream.range(0、temp.length) .maptoobj(i-> temp [temp.length -i -1]); }

このアプローチは簡単ですが、中間配列の作成が必要です。 > input = ...; リスト出力= input.collect(arrayList :: new、 (list、e) - > list.add(0、e)、 (list1、list2) - > list1.addall(0、list2));

static IntStream revRange(int from, int to) {
    return IntStream.range(from, to)
                    .map(i -> to - i   from - 1);
}

要素を保存せずにストリームを逆転させる「適切な」方法がないことに注意する価値があります。ただし、提示された方法は、特定のイントストリーム反転と一般的なストリーム反転の両方に効率的で汎用性の高いソリューションを提供します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3