使用している場合 java-8 これを行う別の方法もあります。
int[] arr = list.stream().mapToInt(i -> i).toArray();
それは何ですか:
Stream<Integer>
リストから取得
- 得
IntStream
アンボクシング、自体(恒等関数)に各要素をマッピングすることにより、int
それぞれが値ホールドをInteger
オブジェクト(Java 5のために自動的に行われます)
int
呼び出して配列を取得するtoArray
intValue
メソッド参照を介して明示的に呼び出すこともできます。
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
リストに参照があるNullPointerException
場合は、を取得できることにも言及する価値がありますnull
。これは、次のようにストリームパイプラインにフィルタリング条件を追加することで簡単に回避できます。
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
例:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int[] arr = list.stream().mapToInt(i -> i).toArray(); //[1, 2, 3, 4]
list.set(1, null); //[1, null, 3, 4]
arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); //[1, 3, 4]