请帮我转换ArrayList为String []。 ArrayList包含Object(VO)类型的值。
例如,
问题是我需要将国家/地区列表转换为字符串数组,对其进行排序,然后将其放入列表中。但是我得到了ClassCastException。
答案 0 :(得分:27)
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()]);
答案 1 :(得分:10)
请帮我转换ArrayList到String [],ArrayList包含 值Object(VO)作为值。
正如您所提到的,列表包含值对象,即您自己的类,您需要重写索取()以使其正常工作。
此代码有效。假设VO
是您的Value 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
给予VO
到期时String
类型不是arraycopy
后来从toArray
调用的本地方法{{1}}所需的类型。
答案 2 :(得分:7)
如果您的ArrayList
包含String
,您只需使用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 );
}
答案 3 :(得分:4)
String[] array = list.toArray(new String[list.size()]);
我们在这做什么:
String[]
数组是您需要转换的String
数组
ArrayList
到ArrayList
个VO对象List#toArray(String[] object)
是转换List对象的方法
到数组对象答案 4 :(得分:2)
正如Viktor正确建议的那样,我已编辑了我的代码段。
这是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);
答案 5 :(得分:2)
在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);