¿Cómo convertir una cadena en una ArrayList?

En mi Cadena, puedo tener un número arbitrario de palabras que están separadas por comas. Quería que cada palabra se agregara a una ArrayList. P.ej:

String s = "a,b,c,d,e,........."; 

Pruebe algo como

 List myList = new ArrayList(Arrays.asList(s.split(","))); 
  • Documentación de Arrays.asList
  • Documentación de String.split
  • Documentación del constructor ArrayList(Collection)

Manifestación:

 String s = "lorem,ipsum,dolor,sit,amet"; List myList = new ArrayList(Arrays.asList(s.split(","))); System.out.println(myList); // prints [lorem, ipsum, dolor, sit, amet] 

Esta publicación ha sido reescrita como un artículo aquí .

  String s1="[a,b,c,d]"; String replace = s1.replace("[",""); System.out.println(replace); String replace1 = replace.replace("]",""); System.out.println(replace1); List myList = new ArrayList(Arrays.asList(replace1.split(","))); System.out.println(myList.toString()); 

En Java 9, el uso de List#of , que es una lista inmutable de métodos estáticos de fábrica, se hizo más simple.

  String s = "a,b,c,d,e,........."; List lst = List.of(s.split(",")); 

Opción1 :

 List list = Arrays.asList("hello"); 

Opción 2 :

 List list = new ArrayList(Arrays.asList("hello")); 

En mi opinión, Option1 es mejor porque

  1. podemos reducir la cantidad de objetos ArrayList que se crean de 2 a 1. asList método asList crea y devuelve un Objeto ArrayList.
  2. su rendimiento es mucho mejor (pero devuelve una lista de tamaño fijo).

Por favor, consulte la documentación aquí

Si quieres convertir una cadena en una ArrayList, prueba esto:

 public ArrayList convertStringToArraylist(String str) { ArrayList charList = new ArrayList(); for(int i = 0; i 

Pero veo una matriz de cadenas en su ejemplo, así que si quiere convertir una matriz de cadenas en ArrayList, use esto:

 public static ArrayList convertStringArrayToArraylist(String[] strArr){ ArrayList stringList = new ArrayList(); for (String s : strArr) { stringList.add(s); } return stringList; } 

Si está importando o tiene una matriz (de tipo cadena) en su código y tiene que convertirla en una lista de arrays (cadena de conversación), entonces el uso de colecciones es mejor. Me gusta esto:

 String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then List allEds = new ArrayList(); Collections.addAll(allEds, array1); 

Ok, voy a extender las respuestas aquí ya que muchas de las personas que vienen aquí quieren dividir la cadena por un espacio en blanco . Así es como se hace:

 List List = new ArrayList(Arrays.asList(s.split("\\s+"))); 

Podrías usar:

 List tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList()); 

Debería preguntarse si realmente necesita ArrayList en primer lugar. Muy a menudo, vas a filtrar la lista según criterios adicionales, para los cuales un Stream es perfecto. Es posible que desee un conjunto; es posible que desee filtrarlos por medio de otra expresión regular, etc. Java 8 proporciona esta útil extensión, por cierto, que funcionará en cualquier CharSequence : https://docs.oracle.com/javase/8/docs/ api / java / util / regex / Pattern.html # splitAsStream-java.lang.CharSequence- . Como no necesita la matriz en absoluto, evite crearla así:

 // This will presumbly be a static final field somewhere. Pattern splitter = Pattern.compile("\\s+"); // ... String untokenized = reader.readLine(); Stream tokens = splitter.splitAsStream(untokenized);