2012-04-19 24 views
80

Eventuali duplicati:
Assigning an array to an ArrayList in JavaCome posso convertire String [] per ArrayList <String>

Ho bisogno di convertire un String[] a un ArrayList<String> e io non so come

File dir = new File(Environment.getExternalStorageDirectory() + "/dir/"); 
String[] filesOrig = dir.list(); 

Fondamentalmente vorrei trasformare filesOrig in un ArrayList.

+1

http://stackoverflow.com/questions/3746639/assigning-an-array-to-an-arraylist-in-java – evanwong

risposta

256

È possibile effettuare le seguenti operazioni:

String [] strings = new String [] {"1", "2" }; 
List<String> stringList = new ArrayList<String>(Arrays.asList(strings)); //new ArrayList is only needed if you absolutely need an ArrayList 
+0

Grazie, questo è quello che ho usato –

+0

soluzione semplice. Grazie :) – ARiF

+1

Non credo che tu possa modificare questo elenco. stringList.remove (1) sicuramente non funziona per me. –

4

Si può ciclo tutto l'array e aggiungere in ArrayList:

ArrayList<String> files = new ArrayList<String>(filesOrig.length); 
for(String file: filesOrig) { 
    files.add(file); 
} 

Oppure utilizzare Arrays.asList(T... a) di fare come il commento postato.

+1

'... nuovo ArrayList (filesOrig.length); 'impedisce che il backing array debba essere ingrandito. Potenzialmente più veloce. – zapl

21

Così:

String[] words = {"000", "aaa", "bbb", "ccc", "ddd"}; 
List<String> wordList = new ArrayList<String>(Arrays.asList(words)); 

o

List myList = new ArrayList(); 
String[] words = {"000", "aaa", "bbb", "ccc", "ddd"}; 
Collections.addAll(myList, words); 
+1

Grazie .. Non ho potuto usare 'Arrays.asList' come ho dovuto aggiungere un elemento alla lista dopo. 'addAll' ha funzionato perfettamente :) –

10
List<String> list = Arrays.asList(array); 

Questa lista sarà sostenuto dalla matrice, esso agisce come un ponte, di dimensioni fisse così sarà.

+0

Questa risposta è sbagliata e non verrà nemmeno compilata. – suriv

+0

@suriv: l'unico problema era 'List' invece di' ArrayList' ma la risposta non è sbagliata. Creare una copia di un array su un 'ArrayList' non è sempre necessario, a volte basta visualizzare un array come un elenco. Ricorda che creare una copia reale, come in 'new ArrayList <> (Arrays.asList (array))' richiede una memoria per ogni elemento della lista. Ad esempio un array 100000 'Object' richiede 800kb di RAM solo per i puntatori ai riferimenti. – Jack

+0

Per il beneficio dei futuri lettori, provare ad aggiungere o rimuovere elementi da questo elenco genererà un'eccezione. – suriv

5
List myList = new ArrayList(); 
Collections.addAll(myList, filesOrig); 
2

Si può fare qualcosa di simile

MyClass [] arr = myList.toArray (new MyClass [myList.size()]);

Problemi correlati