Maison >Java >javaDidacticiel >Comment convertir efficacement une ArrayList en un tableau int primitif en Java ?
Conversion de ArrayList
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!