2012-04-19 38 views
80

Duplicar posible:
Assigning an array to an ArrayList in Java¿Cómo puedo convertir String [] para arrayList <String>

Necesito convertir un String[] a un ArrayList<String> y yo no sé cómo

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

Básicamente me gustaría transformar filesOrig en un ArrayList.

+1

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

Respuesta

256

Usted puede hacer lo siguiente:

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

Gracias, este es el que utilicé –

+0

Solución simple. Gracias :) – ARiF

+1

No creo que puedas hacer cambios en esta lista. stringList.remove (1) seguro que no funciona para mí. –

4

Puede recorrer toda la gama y añadir en ArrayList:

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

O utilice Arrays.asList(T... a) a hacer lo que el comentario publicado.

+1

'... nueva ArrayList (filesOrig.length); 'impide que la matriz de respaldo tenga que crecer de tamaño. Potencialmente más rápido. – zapl

21

De esta manera:

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

Gracias .. No pude usar 'Arrays.asList' ya que tuve que agregar un elemento a la lista más tarde. 'addAll' funcionó perfectamente :) –

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

La lista devuelta será respaldado por la matriz, actúa como un puente, de tamaño fijo por lo que será.

+0

Esta respuesta es incorrecta y ni siquiera compilará. – suriv

+0

@suriv: el único problema era 'List' en lugar de' ArrayList' pero la respuesta no es incorrecta. Crear una copia de una matriz a una 'ArrayList' no siempre es necesario, a veces solo necesita ver una matriz como una lista. Tenga en cuenta que la creación de una copia real, como en 'new ArrayList <> (Arrays.asList (array)) 'requiere una memoria para cada elemento de la lista. Por ejemplo, un arreglo 100000 'Object' requiere 800kb de RAM solo para los punteros a las referencias. – Jack

+0

Para el beneficio de futuros lectores, intentar agregar o eliminar elementos de esta lista generará una excepción. – suriv

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

Usted puede hacer algo como

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

Cuestiones relacionadas