texto separar separado por manejo leer espacios ejercicios comas caracter cadenas array archivo java string collections split

java - separar - ¿Cómo convertir una cadena separada por comas en ArrayList?



separar un array por comas java (23)

¿Existe algún método incorporado en Java que nos permita convertir cadenas separadas por comas en algún contenedor (por ejemplo, matriz, Lista o Vector)? ¿O necesito escribir código personalizado para eso?

String commaSeparated = "item1 , item2 , item3"; ArrayList<String> items = //method that converts above string into list??


Aquí hay otro para convertir CSV a ArrayList:

String str="string,with,comma"; ArrayList aList= new ArrayList(Arrays.asList(str.split(","))); for(int i=0;i<aList.size();i++) { System.out.println(" -->"+aList.get(i)); }

Te imprime

-> cuerda
-> con
-> coma


Dos pasos:

  1. String [] items = commaSeparated.split(",");
  2. List<String> container = Arrays.asList(items);

En groovy, puedes usar el método tokenize (Token de personaje):

list = str.tokenize('','')


Este código de abajo te puede ayudar,

List myList = new ArrayList(); String myStr = "item1 , item2 , item3"; myList = Arrays.asList(myStr.split(" , "));


Hay muchas maneras de resolver esto utilizando flujos en Java 8, pero en mi opinión, los siguientes liners son sencillos:

String commaSeparated = "item1 , item2 , item3"; List<String> result1 = Arrays.stream(commaSeparated.split(" , ")) .collect(Collectors.toList()); List<String> result2 = Stream.of(commaSeparated.split(" , ")) .collect(Collectors.toList());


Mismo resultado que puedes lograr usando la clase Splitter.

var list = Splitter.on(",").splitToList(YourStringVariable)

(Escrito en kotlin)


No hay un método incorporado para esto, pero simplemente puede usar el método split () en este.

String commaSeparated = "item1 , item2 , item3"; ArrayList<String> items = new ArrayList<String>(Arrays.asList(commaSeparated.split(",")));


Primero puede dividirlos usando String.split(",") , y luego convertir la array String devuelta en una ArrayList usando Arrays.asList(array)


Puede usar Guava para dividir la cadena y convertirla en un ArrayList. Esto también funciona con una cadena vacía y devuelve una lista vacía.

import com.google.common.base.Splitter; import com.google.common.collect.Lists; String commaSeparated = "item1 , item2 , item3"; // Split string into list, trimming each item and removing empty items ArrayList<String> list = Lists.newArrayList(Splitter.on('','').trimResults().omitEmptyStrings().splitToList(commaSeparated)); System.out.println(list); list.add("another item"); System.out.println(list);

saca lo siguiente:

[item1, item2, item3] [item1, item2, item3, another item]


Puedes hacerlo de la siguiente manera.

Esto elimina el espacio en blanco y se divide por comas donde no necesita preocuparse por los espacios en blanco.

String myString= "A, B, C, D"; //Remove whitespace and split by comma List<String> finalString= Arrays.asList(myString.split("//s*,//s*")); System.out.println(finalString);


Se puede combinar como lista y dividir.

Arrays.asList(CommaSeparated.split("//s*,//s*"))


Si una List es el objetivo final, como lo indicó el OP, entonces la respuesta ya aceptada sigue siendo la más corta y la mejor. Sin embargo, quiero ofrecerle alternativas utilizando Java 8 Streams , que le brindarán más beneficios si es parte de una tubería para su posterior procesamiento.

Al ajustar el resultado de la función .split (una matriz nativa) en una secuencia y luego convertirla en una lista.

List<String> list = Stream.of("a,b,c".split(",")) .collect(Collectors.toList());

Si es importante que el resultado se almacene como un ArrayList según el título del OP, puede usar un método de Collector diferente:

ArrayList<String> list = Stream.of("a,b,c".split(",")) .collect(Collectors.toCollection(ArrayList<String>::new));

O mediante el uso de la API de análisis RegEx:

ArrayList<String> list = Pattern.compile(",") .splitAsStream("a,b,c") .collect(Collectors.toCollection(ArrayList<String>::new));

Tenga en cuenta que aún podría considerar dejar la variable de list escrita como List<String> lugar de ArrayList<String> . La interfaz genérica para List todavía se ve bastante similar a la implementación de ArrayList .

Por sí mismos, estos ejemplos de código no parecen agregar mucho (excepto más tipos de escritura), pero si planea hacer más, como esta respuesta en la conversión de una Cadena a una Lista de Longs ejemplifica, la API de transmisión es realmente poderosa al permitir para canalizar sus operaciones una tras otra.

Por el bien de, ya sabes, la integridad.


Un ejemplo utilizando Collections .

import java.util.Collections; ... String commaSeparated = "item1 , item2 , item3"; ArrayList<String> items = new ArrayList<>(); Collections.addAll(items, commaSeparated.split("//s*,//s*")); ...


Usualmente uso un patrón precompilado para la lista. Y también esto es un poco más universal ya que puede considerar corchetes que siguen algunas de las expresiones listToString.

private static final Pattern listAsString = Pattern.compile("^//[?([^//[//]]*)//]?$"); private List<String> getList(String value) { Matcher matcher = listAsString.matcher((String) value); if (matcher.matches()) { String[] split = matcher.group(matcher.groupCount()).split("//s*,//s*"); return new ArrayList<>(Arrays.asList(split)); } return Collections.emptyList();


convertir la colección en una cadena como coma separada en Java 8

El objeto listOfString contiene elementos ["A", "B", "C", "D"]

listOfString.stream().map(ele->"''"+ele+"''").collect(Collectors.joining(","))

La salida es: - ''A'', ''B'', ''C'', ''D''

Y convertir cadenas de cadenas a la lista en Java 8

String string[] ={"A","B","C","D"}; List<String> listOfString = Stream.of(string).collect(Collectors.toList());


Arrays.asList devuelve una List tamaño fijo respaldada por la matriz. Si desea un java.util.ArrayList mutable normal, necesita hacer esto:

List<String> list = new ArrayList<String>(Arrays.asList(string.split(" , ")));

O, usando guayaba :

List<String> list = Lists.newArrayList(Splitter.on(" , ").split(string));

El uso de un Splitter le brinda más flexibilidad en la forma de dividir la cadena y le brinda la capacidad de, por ejemplo, omitir cadenas vacías en los resultados y recortar los resultados. También tiene un comportamiento menos extraño que String.split y no requiere que se divida por expresiones regulares (esa es solo una opción).


Cadena -> Conversión de colección : (Cadena -> Cadena [] -> Colección)

// java version 8 String str = "aa,bb,cc,dd,aa,ss,bb,ee,aa,zz,dd,ff,hh"; // Collection, // Set , List, // HashSet , ArrayList ... // (____________________________) // || || // // // Collection<String> col = new HashSet<>(Stream.of(str.split(",")).collect(Collectors.toList()));

Colección -> Cadena de conversión [] :

String[] se = col.toArray(new String[col.size()]);

Cadena -> Cadena [] conversión:

String[] strArr = str.split(",");

Y Colección -> Colección :

List<String> list = new LinkedList<>(col);


Convertir cadena separada por comas a la lista

List<String> items = Arrays.asList(str.split("//s*,//s*"));

El código anterior divide la cadena en un delimitador definido como: zero or more whitespace, a literal comma, zero or more whitespace que colocarán las palabras en la lista y colapsarán cualquier espacio en blanco entre las palabras y las comas.

Tenga en cuenta que esto devuelve simplemente un envoltorio en una matriz: NO PUEDE, por ejemplo, .remove() de la List resultante. Para una ArrayList real, debe usar más new ArrayList<String> .


ArrayList<HashMap<String, String>> mListmain = new ArrayList<HashMap<String, String>>(); String marray[]= mListmain.split(",");


List commaseperated = new ArrayList(); String mylist = "item1 , item2 , item3"; mylist = Arrays.asList(myStr.trim().split(" , ")); // enter code here


List<String> items = Arrays.asList(commaSeparated.split(","));

Eso debería funcionar para ti.


List<String> items = Arrays.asList(s.split("[,//s]+"));


List<String> items= Stream.of(commaSeparated.split(",")) .map(String::trim) .collect(toList());