如何在java中将ArrayList转换为String [],Arraylist包含VO对象

use*_*535 15 java arrays arraylist classcastexception

请帮我转换ArrayList到String [].ArrayList包含Object(VO)类型的值.

例如,

问题是我需要将国家/地区列表转换为字符串数组,对其进行排序,然后将其放入列表中.但是我得到了ClassCastException.

Pra*_*mar 27

String [] countriesArray = countryList.toArray(new String[countryList.size()]);
Run Code Online (Sandbox Code Playgroud)

我假设你的国家名单是countryList.

因此,要将任何类的ArrayList转换为数组,请使用以下代码.将T转换为要创建其数组的类.

List<T> list = new ArrayList<T>();    
T [] countries = list.toArray(new T[list.size()]);
Run Code Online (Sandbox Code Playgroud)


Vik*_*bin 10

请帮我转换ArrayList到String [],ArrayList包含值对象(VO)作为值.

正如您所提到的那样,list包含Values Object,即您自己的类,您需要重写String()以使其正常工作.

这段代码有效.假设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);
Run Code Online (Sandbox Code Playgroud)

的片段

    List<VO> listOfValueObject = new ArrayList<VO>();
    listOfValueObject.add(new VO());
    String[] countriesArray = listOfValueObject.toArray(new String[listOfValueObject.size()]);
Run Code Online (Sandbox Code Playgroud)

会给你ArrayStoreException到期VO的不是后来从一个调用String的本机方法所要求的类型.arraycopytoArray


Rob*_*bin 7

如果你ArrayList包含Strings,你可以简单地使用这个toArray方法:

String[] array = list.toArray( new String[list.size()] );
Run Code Online (Sandbox Code Playgroud)

如果不是这种情况(因为你的问题并不完全清楚),你必须手动循环遍历所有元素

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 );
}
Run Code Online (Sandbox Code Playgroud)