lista convertir como array java arrays arraylist classcastexception

convertir - lista to string java



Cómo convertir ArrayList a String[] en Java, el Arraylist contiene objetos VO (6)

Ayúdame a convertir ArrayList en Cadena []. ArrayList contiene valores de tipo Object (VO).

Por ejemplo,

El problema es que necesito convertir una lista de países en una matriz de cadenas, ordenarla y luego ponerla en una lista. Sin embargo, estoy obteniendo una ClassCastException.


Ayúdenme a convertir ArrayList en String [], ArrayList contiene el objeto de valores (VO) como valores.

Como mencionó que la lista contiene Objeto de valores, es decir, su propia clase, necesita queString () se invalide para que esto funcione correctamente.

Este código funciona Suponiendo que VO es su clase de objeto de valor.

List<VO> listOfValueObject = new ArrayList<VO>(); listOfValueObject.add(new VO()); String[] result = new String[listOfValueObject.size()]; for (int i = 0; i < listOfValueObject.size(); i++) { result[i] = listOfValueObject.get(i).toString(); } Arrays.sort(result); List<String> sortedList = Arrays.asList(result);

El fragmento de

List<VO> listOfValueObject = new ArrayList<VO>(); listOfValueObject.add(new VO()); String[] countriesArray = listOfValueObject.toArray(new String[listOfValueObject.size()]);

le dará ArrayStoreException debido a que el VO no es el tipo de String requerido por el método nativo arraycopy subsecuentemente llamado desde el toArray uno.


Como correctamente sugirió Viktor, he editado mi fragmento.

El es un método en ArrayList (toArray) como:

List<VO> listOfValueObject // is your value object String[] countries = new String[listOfValueObject.size()]; for (int i = 0; i < listOfValueObject.size(); i++) { countries[i] = listOfValueObject.get(i).toString(); }

Luego para ordenar tienes:

Arrays.sort(countries);

Luego volver a convertir a List como ::

List<String> countryList = Arrays.asList(countries);


En caso de que su ArrayList contenga String , puede simplemente usar el método toArray :

String[] array = list.toArray( new String[list.size()] );

Si ese no es el caso (ya que su pregunta no está completamente clara al respecto), tendrá que pasar manualmente por todos los elementos

List<MyRandomObject> list; String[] array = new String[list.size() ]; for( int i = 0; i < list.size(); i++ ){ MyRandomObject listElement = list.get(i); array[i] = convertObjectToString( listElement ); }


String [] countriesArray = countryList.toArray(new String[countryList.size()]);

Asumí que el nombre de la lista de su país es countryList .

Entonces, para convertir ArrayList de cualquier clase en matriz, use el siguiente código. Convierta T en la clase cuyas matrices desea crear.

List<T> list = new ArrayList<T>(); T [] countries = list.toArray(new T[list.size()]);


String[] array = list.toArray(new String[list.size()]);

Qué estamos haciendo aquí:

  • String[] array es la matriz String que necesita para convertir su ArrayList a
  • lista es su ArrayList de objetos VO que tiene a mano
  • List#toArray(String[] object) es el método para convertir objetos List a objetos Array

Antes de Java 8 tenemos la opción de iterar la lista y poblar la matriz, pero con Java 8 también tenemos la opción de utilizar la transmisión. Compruebe el siguiente código:

//Populate few country objects where Country class stores name of country in field name. List<Country> countries = new ArrayList<>(); countries.add(new Country("India")); countries.add(new Country("USA")); countries.add(new Country("Japan")); // Iterate over list String[] countryArray = new String[countries.size()]; int index = 0; for (Country country : countries) { countryArray[index] = country.getName(); index++; } // Java 8 has option of streams to get same size array String[] stringArrayUsingStream = countries.stream().map(c->c.getName()).toArray(String[]::new);