Java Gold メソッド逆引き早見表 Stream型を返すメソッド


### Stream型を返すメソッド


| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型(Stream<T>) | メソッドの動作 | 引数 |
|------------|-----------------------------|----------------------|-----------------|------|
| `Stream.of(T... values)` | `Stream` | `Stream<T>` | 可変長引数で指定した要素を含む Stream を返す | `T... values` |
| `Arrays.stream(T[] array)` | `Arrays` | `Stream<T>` | 配列から Stream を生成する | `T[] array` |
| `Arrays.stream(int[] array)` | `Arrays` | `IntStream` | 配列から IntStream を生成する | `int[] array` |
| `Arrays.stream(double[])` | `Arrays` | `DoubleStream` | コレクションから DoubleStream を生成する | double[] array |
| `Arrays.stream(long[])` | `Arrays` | `LongStream` | コレクションから LongStream を生成する | long[] array |
| `Collection.parallelStream()` | `Collection` | `Stream<T>` | コレクションから並行 Stream を生成する | なし |
| `Stream.generate(Supplier<T> s)` | `Stream` | `Stream<T>` | 指定した Supplier で生成した無限の Stream を返す | `Supplier<T>` |
| `Stream.iterate(T seed, UnaryOperator<T> f)` | `Stream` | `Stream<T>` | 初期値と関数で無限の Stream を生成する | `T seed, UnaryOperator<T>` |
| `Stream.concat(Stream<? extends T> a, Stream<? extends T> b)` | `Stream` | `Stream<T>` | 2つの Stream を連結する | `Stream<? extends T> a, Stream<? extends T> b` |
| `Stream.ofNullable(T value)` | `Stream` | `Stream<T>` | 指定した値を含む Stream を返す。値がない場合は空の Stream を返す | `T value` |
| `Optional.stream()` | `Optional` | `Stream<T>` | Optional の値を Stream として返す。値がない場合は空の Stream を返す | なし |
| `Files.lines(Path path, Charset cs)` | `Files` | `Stream<String>` | ファイルの各行を Stream として返す | `Path path, Charset cs` |
| `Files.list(Path dir)` | `Files` | `Stream<Path>` | ディレクトリ内のファイルとディレクトリの Path を含む Stream を返す | `Path dir` |
| `Stream.flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)` | `Stream` | `Stream<R>` | 各要素を別の Stream に変換し平坦化する | `Function<? super T, ? extends Stream<? extends R>> mapper` |
| `Stream.map(Function<? super T, ? extends R> mapper)` | `Stream` | `Stream<R>` | 各要素を変換し、新しい Stream を生成する | `Function<? super T, ? extends R>` |
| `Stream.distinct()` | `Stream` | `Stream<T>` | 重複を除いた要素を含む Stream を生成する | なし |
| `Stream.sorted()` | `Stream` | `Stream<T>` | 自然順序でソートされた Stream を生成する | なし |
| `Stream.sorted(Comparator<? super T> comparator)` | `Stream` | `Stream<T>` | 指定された Comparator でソートされた Stream を生成する | `Comparator<? super T> comparator` |
| `Stream.peek(Consumer<? super T> action)` | `Stream` | `Stream<T>` | 各要素に指定されたアクションを適用する | `Consumer<? super T> action` |
| `Stream.skip(long n)` | `Stream` | `Stream<T>` | 最初の n 要素をスキップした Stream を返す | `long n` |
| `Stream.takeWhile(Predicate<? super T> predicate)` | `Stream` | `Stream<T>` | 条件を満たす要素が続く限り Stream を返す | `Predicate<? super T> predicate` |

### プリミティブ型ストリーム関連メソッド (IntStream)

| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型 | メソッドの動作 | 引数 |
|------------|-----------------------------|----------------------|-----------------|------|
| `IntStream.of(int... values)` | `IntStream` | `IntStream` | 可変長引数で指定した要素を含む IntStream を返す | `int... values` |
| `IntStream.range(int startInclusive, int endExclusive)` | `IntStream` | `IntStream` | 範囲内の整数を含む IntStream を返す | `int startInclusive, int endExclusive` |
| `IntStream.rangeClosed(int startInclusive, int endInclusive)` | `IntStream` | `IntStream` | 範囲内の整数を含む IntStream を返す | `int startInclusive, int endInclusive` |
| `IntStream.map(IntUnaryOperator mapper)` | `IntStream` | `IntStream` | 各要素を指定された関数で変換し、新しい IntStream を返す | `IntUnaryOperator mapper` |
| `IntStream.mapToObj(IntFunction<? extends U> mapper)` | `IntStream` | `Stream<U>` | 各要素をオブジェクトに変換し、Stream を生成する | `IntFunction<? extends U> mapper` |
| `IntStream.flatMap(IntFunction<? extends IntStream> mapper)` | `IntStream` | `IntStream` | 各要素を別の IntStream に変換し、平坦化された IntStream を返す | `IntFunction<? extends IntStream> mapper` |
| `IntStream.peek(IntConsumer action)` | `IntStream` | `IntStream` | 各要素に指定されたアクションを適用する | `IntConsumer action` |
| `IntStream.takeWhile(IntPredicate predicate)` | `IntStream` | `IntStream` | 条件を満たす要素が続く限り IntStream を返す | `IntPredicate predicate` |
| `IntStream.dropWhile(IntPredicate predicate)` | `IntStream` | `IntStream` | 条件を満たさなくなるまでの要素をスキップし、残りの要素で構成される IntStream を返す | `IntPredicate predicate` |
| `IntStream.concat(IntStream a, IntStream b)` | `IntStream` | `IntStream` | 2つの IntStream を連結する | `IntStream a, IntStream b` |


### 補足: プリミティブ型を返すメソッド

| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型 | メソッドの動作 |
|------------|-----------------------------|--------------|-----------------|
| `OptionalInt.getAsInt()` | `OptionalInt` | `int` | OptionalInt に値が存在する場合にその値を返す。値がない場合は `NoSuchElementException` をスロー |
| `IntStream.sum()`     | `IntStream` | `int` | IntStream の全ての要素を合計して返す。要素がない場合は 0 を返す |
|`IntStream.count()`|`IntStream`|`long`|要素数をlong型で返すリダクション操作。`return mapToLong(e -> 1L).sum()`と同等|
|`Stream.count()`|`Stream`|`long`|-|
|`IntStream.reduce​(int identity, IntBinaryOperator op)`|`IntStream`|`int`|ストリームの要素を累積し、単一の結果を返す。|

---

https://qiita.com/T-ngtj/private/f99f0c0b367ece775d97


https://qiita.com/T-ngtj/private/df254aacd05be698199a