ホームページ >Java >&#&チュートリアル >Java で ArrayList をプリミティブ int 配列に効率的に変換する方法

Java で ArrayList をプリミティブ int 配列に効率的に変換する方法

DDD
DDDオリジナル
2024-12-15 07:46:13733ブラウズ

How to Efficiently Convert an ArrayList to a Primitive int Array in Java?

ArrayList を変換していますto Primitive int Array

以下のコードを使用して、Integer オブジェクトを含む ArrayList をプリミティブ int 配列に変換しようとすると、コンパイル時エラーが発生します:

List<Integer> x = new ArrayList<>();
int[] n = (int[]) x.toArray(int[x.size()]);

Java 8 ストリーム変換

Java 8 では、さらに効率的なアプローチには、Stream API の使用が含まれます。その方法は次のとおりです。

int[] arr = list.stream()
    .mapToInt(Integer::intValue)
    .toArray();

このコードは、リストからストリームを作成し、Integer::intValue メソッド参照を使用して各 Integer オブジェクトをそのプリミティブ int 値にマップし、次に IntStream を int 配列に変換します。 toArray() を使用しています。

エラー処理

リストに null 参照が含まれている場合、上記のコードは NullPointerException をスローします。これを回避するには、マッピング前に null 値をフィルタリングして除外します。

int[] arr = list.stream()
    .filter(Objects::nonNull)
    .mapToInt(Integer::intValue)
    .toArray();

例:

List<Integer> list = Arrays.asList(1, 2, 3, 4);

// Convert to int[]
int[] arr1 = list.stream()
    .mapToInt(Integer::intValue)
    .toArray(); // [1, 2, 3, 4]

// Filter out nulls before conversion
list.set(1, null); // [1, null, 3, 4]
int[] arr2 = list.stream()
    .filter(Objects::nonNull)
    .mapToInt(Integer::intValue)
    .toArray(); // [1, 3, 4]

以上がJava で ArrayList をプリミティブ int 配列に効率的に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。