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 matrizString
que necesita para convertir suArrayList
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);