Aidez-moi à convertir ArrayList en chaîne []. ArrayList contient des valeurs de type Object (VO).
Par exemple,
Le problème est que je dois convertir une liste de pays en tableau de chaînes, la trier puis la mettre dans une liste. Cependant, je reçois une exception ClassCastException.
String [] countriesArray = countryList.toArray(new String[countryList.size()]);
J'ai supposé que le nom de votre liste de pays est countryList
.
Donc, pour convertir ArrayList de n'importe quelle classe en tableau, utilisez le code suivant. Convertissez T en classe dont vous souhaitez créer les tableaux.
List<T> list = new ArrayList<T>();
T [] countries = list.toArray(new T[list.size()]);
S'il vous plaît, aidez-moi à convertir ArrayList en String [], ArrayList contient Values Object (VO) comme Values.
Comme vous l'avez mentionné, cette liste contient un objet valeurs, c'est-à-dire votre propre classe, vous devez remplacer toString () pour que cela fonctionne correctement.
Ce code fonctionne. En supposant que VO
est votre classe d'objets de valeur.
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);
L'extrait de
List<VO> listOfValueObject = new ArrayList<VO>();
listOfValueObject.add(new VO());
String[] countriesArray = listOfValueObject.toArray(new String[listOfValueObject.size()]);
vous donnera ArrayStoreException
due VO
n'est pas le type String
comme requis par la méthode native arraycopy
appelée par la suite depuis toArray
one.
Dans le cas où votre ArrayList
contient String
s, vous pouvez simplement utiliser la méthode toArray
:
String[] array = list.toArray( new String[list.size()] );
Si ce n'est pas le cas (comme votre question n'est pas complètement claire à ce sujet), vous devrez parcourir manuellement tous les éléments
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[] array = list.toArray(new String[list.size()]);
Que faisons-nous ici:
String[]
Est le tableau String
dont vous avez besoin pour convertir votre ArrayList
enArrayList
des objets VO que vous avez en mainList#toArray(String[] object)
est la méthode pour convertir des objets List en objets ArrayComme l'a suggéré correctement Viktor, j'ai modifié mon extrait de code.
Est une méthode dans ArrayList (toArray) comme:
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();
}
Ensuite, pour trier vous avez:
Arrays.sort(countries);
Puis reconvertir en liste comme ::
List<String> countryList = Arrays.asList(countries);
Avant Java 8, nous avons la possibilité d'itérer la liste et de remplir le tableau, mais avec Java 8, nous avons également la possibilité d'utiliser stream. Vérifiez le code suivant:
//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);