Open1

【Java】数値の範囲を指定して動的リストで一括定義する

no215no215
コード例
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> にする。