Maison >Java >javaDidacticiel >Comment diviser une ArrayList Java en plusieurs ArrayLists plus petites ?

Comment diviser une ArrayList Java en plusieurs ArrayLists plus petites ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 04:33:02435parcourir

How to Split a Java ArrayList into Multiple Smaller ArrayLists?

Diviser une ArrayList en plusieurs ArrayLists plus petites en Java

Diviser un tableau d'une longueur spécifique en tableaux plus petits d'une taille prédéterminée est une pratique courante tâche en programmation. Lorsqu'il s'agit de Java ArrayLists, la méthode subList(int fromIndex, int toIndex) s'avère utile.

La méthode subList() crée une vue d'une partie de la liste d'origine, en commençant au fromIndex spécifié (inclus) et en terminant au toIndex (exclusif). Cette vue est soutenue par la liste d'origine.

Pour illustrer son utilisation, considérons une ArrayList d'entiers :

List<Integer> numbers = new ArrayList<>(
    Arrays.asList(5, 3, 1, 2, 9, 5, 0, 7)
);

En utilisant subList(), nous pouvons créer des vues plus petites :

List<Integer> head = numbers.subList(0, 4);
System.out.println(head); // Prints: [5, 3, 1, 2]

Pour séparer la liste en sous-listes non vues, nous pouvons créer de nouvelles listes basées sur le vues :

List<List<Integer>> parts = new ArrayList<>();
final int L = 3;
final int N = numbers.size();

for (int i = 0; i < N; i += L) {
    parts.add(new ArrayList<>(list.subList(i, Math.min(N, i + L))));
}

Cela donne lieu à plusieurs ArrayLists plus petites. Cependant, les modifications apportées à toute sous-liste seront reflétées dans la liste d'origine à moins que nous créions une version non modifiable.

Par exemple :

List<Integer> numbers = Collections.unmodifiableList(
    Arrays.asList(5, 3, 1, 2, 9, 5, 0, 7)
);
List<List<Integer>> parts = chopped(numbers, 3);
System.out.println(parts); // Prints: [[5, 3, 1], [2, 9, 5], [0, 7]]
parts.get(0).add(-1);
System.out.println(parts); // Prints: [[5, 3, 1, -1], [2, 9, 5], [0, 7]]
System.out.println(numbers); // Prints: [5, 3, 1, 2, 9, 5, 0, 7] (unchanged)

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