web-dev-qa-db-fra.com

Ajouter plusieurs éléments à l'arraylist déjà initialisé en Java

Je suis en train de googler et n'arrive pas à trouver la syntaxe. Ma arraylist peut être renseignée différemment en fonction d'un paramètre utilisateur. Je l'ai donc initialisée.

ArrayList<Integer> arList = new ArrayList<Integer>();

Et maintenant, j'aimerais ajouter des centaines d'entiers sans le faire un à un avec arList.add(55);

60
batoutofhell

Si vous avez une autre liste contenant tous les éléments que vous souhaitez ajouter, vous pouvez créer arList.addAll(otherList). Si vous souhaitez toujours ajouter les mêmes éléments à la liste, vous pouvez également créer une nouvelle liste qui est initialisée pour contenir toutes vos valeurs et utiliser la méthode addAll(), avec quelque chose comme: 

Integer[] otherList = new Integer[] {1, 2, 3, 4, 5};
arList.addAll(Arrays.asList(otherList));

ou, si vous ne voulez pas créer ce tableau inutile:

arList.addAll(Arrays.asList(1, 2, 3, 4, 5));

Sinon, vous devrez avoir une sorte de boucle qui ajoute les valeurs à la liste individuellement.

84
scaevity

Quelle est la "source" de ces entiers? Si vous avez besoin de coder en dur dans votre code source, vous pouvez faire

arList.addAll(Arrays.asList(1,1,2,3,5,8,13,21));
25
Adrian Shum

Collections.addAll est une méthode varargs qui nous permet d’ajouter un nombre quelconque d’éléments à une collection dans une seule instruction:

List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Il peut également être utilisé pour ajouter des éléments de tableau à une collection:

Integer[] arr = ...;
Collections.addAll(list, arr);
3
Radiodef

Si vous cherchez à éviter plusieurs lignes de code pour économiser de l'espace, cette syntaxe pourrait être utile: 

        Java.util.ArrayList lisFieldNames = new ArrayList() {
            {
                add("value1"); 
                add("value2");
            }
        };

En supprimant les nouvelles lignes, vous pouvez l'afficher compressé comme suit: 

        Java.util.ArrayList lisFieldNames = new ArrayList() {
            {
                add("value1"); add("value2"); (...);
            }
        };
3
Fran G Aparicio

Si vous aviez besoin d’ajouter beaucoup d’entiers, il serait probablement plus simple d’utiliser une boucle for. Par exemple, ajouter 28 jours à un tableau daysInFebruary.

ArrayList<Integer> daysInFebruary = new ArrayList<>();

for(int i = 1; i <= 28; i++) {
    daysInFebruary.add(i);
}
0
sg9