Как преобразовать ArrayList в String [] в java, Arraylist содержит объекты VO
Пожалуйста, помогите мне преобразовать ArrayList в String []. ArrayList содержит значения типа Object (VO).
Например,
Проблема в том, что мне нужно преобразовать список стран в String Array, отсортировать его и затем поместить в список. Однако я получаю исключение ClassCastException.
Ответы
Ответ 1
String [] countriesArray = countryList.toArray(new String[countryList.size()]);
Я предположил, что название вашей страны countryList
.
Итак, чтобы преобразовать ArrayList любого класса в массив, используйте следующий код. Преобразуйте T в класс, массивы которого вы хотите создать.
List<T> list = new ArrayList<T>();
T [] countries = list.toArray(new T[list.size()]);
Ответ 2
Пожалуйста, помогите мне преобразовать ArrayList в String [], ArrayList Содержит Значения Объект (VO) как значения.
Как вы упомянули, этот список содержит объект значений, то есть ваш собственный класс, для которого требуется toString() переопределить, чтобы сделать эту работу корректной.
Этот код работает. Предполагая, что VO
- это ваш класс Object Object.
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);
Отрывок из
List<VO> listOfValueObject = new ArrayList<VO>();
listOfValueObject.add(new VO());
String[] countriesArray = listOfValueObject.toArray(new String[listOfValueObject.size()]);
даст вам ArrayStoreException
due VO
не тип String
, как требуется встроенным методом arraycopy
, впоследствии вызванным из toArray
one.
Ответ 3
Если ваш ArrayList
содержит String
s, вы можете просто использовать метод toArray
:
String[] array = list.toArray( new String[list.size()] );
Если это не так (поскольку ваш вопрос не совсем ясен), вам придется вручную перебрать все элементы
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 );
}
Ответ 4
String[] array = list.toArray(new String[list.size()]);
Что мы здесь делаем:
-
String[]
array - это массив String
, который необходимо преобразовать
ArrayList
to
- - ваш
ArrayList
объектов VO, которые у вас есть.
-
List#toArray(String[] object)
- это метод преобразования объектов List
к объектам Array
Ответ 5
Как правильно предложил Виктор, я отредактировал свой фрагмент.
Это метод в ArrayList (toArray), например:
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();
}
Затем для сортировки у вас есть:
Arrays.sort(countries);
Затем переконвертируется в List как::
List<String> countryList = Arrays.asList(countries);
Ответ 6
До Java 8 у нас есть возможность итерации списка и заполнения массива, но с Java 8 мы также можем использовать поток. Проверьте следующий код:
//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);