Java8でStreamを作成する方法
コレクションや配列からStreamを作成しますが、その他の方法でもStreamを作成することができます。
配列
配列からStreamを作成します。
String[] arr = {"1", "2"}; Stream<String> stream = Arrays.stream(arr);
Map
MapからStreamを作成します。mapはstreamメソッドがありませんのでentrySetメソッドでSetに変換してからStreamを作成します。
Map<String, String> map = new HashMap<>(); map.put("key", "value"); Stream<> stream = map.entrySet().stream();
List
ListからStreamを作成します。
List<Integer> list = new ArrayList<>(); list.add(1); Stream<Integer> stream = list.stream();
可変長引数
Stream.ofメソッドに可変長引数を指定してStreamを作成します。
Stream<String> stream = Stream.of("a","b");
Stream.builder()
buildメソッドからStreamを作成します。
Stream.Bulder<Integer> builder = Stream.builder(); builder.add(1); Stream<Integer> stream = builder.build();
Stream.generate()
Stream.generateメソッドは無限ストリームを作成します。その為明示的にlimitメソッドなどの中間操作で件数を指定する必要があります。
Stream<Double> stream = Stream.generate(() -> Math.random());
Stream.iterate()
Stream.iterateメソッドも無限ストリームを作成します。第一引数が初期値、第二引数が関数です。
Stream<Integer> stream = Stream.iterate(1, e -> e * 3);
StreamSupport.stream()
SpliteratorからStreamを作成します。
final List<Integer> list = new ArrayList(); list.add(1); list.add(2); final Iterator iterator = list.iterator(); final Spliterator<Integer> spliterator = Spliterators.spliteratorUnknownSize(iterator, Spliterator.NONNULL); StreamSupport.stream(spliterator, false).forEach(System.out::print); // 12
「JavaのライブラリjacksonでJsonNodeの値が配列の場合にString型のListに変換する方法」
Stream.concat()
ストリームとストリームを結合してストリームを返します。
List<String> list1 = new ArrayList<>(); list1.add("test1"); List<String> list2 = new ArrayList<>(); list2.add("test2"); Stream<String> ret = Stream.concat(list1.stream(),list2.stream());
IntStream.range()
IntStream.reangeメソッドはIntStreamを作成します。メソッドチェーンでboxedメソッドによりStreamを返します。
Stream<Integer> stream = IntStream.range(0, 3).boxed();
IntStream.rangeClosed()
IntStream.reangeClosedメソッドもIntStreamを作成します。メソッドチェーンでboxedメソッドによりStreamを返します。
IntStream.rangeClosed(0, 3).boxed();
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント