Open1
【Java】数値の範囲を指定して動的リストで一括定義する
コード例
import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = nextInt();
List<Integer> seat = new ArrayList<>(IntStream.rangeClosed(1, N).boxed().collect(Collectors.toList()));
}
}
各メソッドの挙動
// 1 から N までの整数を生成する IntStream を作成
IntStream.rangeClosed(1, N)
// プリミティブ型 int をラッパークラス Integer に変換する
.boxed()
// Stream<Integer> を List<Integer> に変換
.collect(Collectors.toList())
// List<Integer> の初期値として新しい ArrayList を作成
List<Integer> list = new ArrayList<>(...);
.boxed()
- IntStream はプリミティブ型 int のストリームとなるため、List<Integer> を作るためにはラッパークラスの Integer に変換する必要がある。
- boxed() メソッドは、ストリーム内の各 int をラッパークラス Integer に変換し、Stream<Integer> にする。