2013-03-05 10 views
49

Lo sto cercando su google e non riesco a trovare la sintassi. Il mio arraylist potrebbe essere popolato in modo diverso sulla base di un'impostazione utente, quindi ho inizializzato cheAggiungere più elementi a un arraylist già inizializzato in java

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

Ed ora vorrei aggiungere centinaia di numeri interi senza farlo uno per uno con arList.add(55);

risposta

68

Se avere un altro elenco che contenga tutti gli elementi che vorresti aggiungere puoi fare arList.addAll(otherList). In alternativa, se si vuole sempre aggiungere gli stessi elementi alla lista è possibile creare un nuovo elenco che viene inizializzato per contenere tutti i vostri valori e utilizzare il metodo addAll(), con qualcosa come

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

o, se non lo fai voler creare tale matrice inutili:

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

in caso contrario si dovrà avere una sorta di ciclo che aggiunge i valori all'elenco individualmente.

+0

Davvero, ho pensato che ci fosse un modo migliore? Oh bene, il ciclo funziona. Thx – batoutofhell

+0

Sì, a meno che tu non voglia creare un nuovo elenco inizializzato con tutti i tuoi valori (vedi la mia modifica sopra), quelle sono le tue opzioni. – scaevity

21

Qual è la "fonte" di quei numeri interi? Se si tratta di qualcosa che è necessario codificare nel codice sorgente, si può fare

arList.addAll(Arrays.asList(1,1,2,3,5,8,13,21)); 
+0

Questo è sicuramente il modo più conciso per farlo. – krispy

-3

Credo che la risposta di cui sopra non è corretto, il modo corretto per inizializzare con più valori sarebbe questa ...

int[] otherList ={1,2,3,4,5}; 

quindi la risposta completa con l'inizializzazione corretta sarebbe simile a questa

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

Questo non viene compilato perché int è un tipo primitivo e Arrays.asList() non funziona correttamente su matrici di tipi primitivi. La risposta scelta utilizza Integer, e questo è il modo corretto per farlo. – krispy

2

Se stai cercando di evitare le linee di codici per risparmiare spazio, forse questa sintassi potrebbe essere utile:

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

Rimozione nuove linee, è possibile mostrare compresso come:

 java.util.ArrayList lisFieldNames = new ArrayList() { 
      { 
       add("value1"); add("value2"); (...); 
      } 
     }; 
+0

Richiede ancora più chiamate a 'aggiungi()' e aggiunge confusione anche se è compressa su una riga –

+0

Avrei i valori in una stringa Ej. String theValues ​​= "1,20,2,1001"; (a mano o caricato da un file). Quindi passalo a Array: Integer [] theArray = theValues.split (",", -1); Una volta ottenuto l'array, è facile passarlo a ArrayList: ArrayList numbersList = new ArrayList (java.util.Arrays.asList (theArray)); . (Non testato) –

Problemi correlati