Maison >Java >javaDidacticiel >Comment convertir efficacement une ArrayList en un tableau int primitif en Java ?

Comment convertir efficacement une ArrayList en un tableau int primitif en Java ?

DDD
DDDoriginal
2024-12-15 07:46:13733parcourir

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

Conversion de ArrayList vers Primitive int Array

Tenter de convertir une ArrayList contenant des objets Integer en un tableau int primitif à l'aide du code ci-dessous entraînera une erreur de compilation :

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

Conversion de flux Java 8

Dans Java 8, une approche plus efficace consiste à utiliser l'API Stream. Voici comment procéder :

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

Ce code crée un flux à partir de la liste, mappe chaque objet Integer à sa valeur int primitive à l'aide de la référence de méthode Integer::intValue, puis convertit IntStream en un tableau int en utilisant toArray().

Erreur Gestion

Si la liste contient des références nulles, le code ci-dessus lancera une NullPointerException. Pour éviter cela, vous pouvez filtrer toutes les valeurs nulles avant le mappage :

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

Exemple :

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]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn