ArrayList を String[] に変換するのを手伝ってください。ArrayList には Object(VO) 型の値が含まれます。
例えば、
問題は、国のリストを文字列配列に変換し、並べ替えてからリストに入れる必要があることです。ただし、ClassCastException が発生しています。
ArrayList を String[] に変換するのを手伝ってください。ArrayList には Object(VO) 型の値が含まれます。
例えば、
問題は、国のリストを文字列配列に変換し、並べ替えてからリストに入れる必要があることです。ただし、ClassCastException が発生しています。
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()]);
ArrayList を String[] に変換するのを手伝ってください。ArrayList には値オブジェクト (VO) が値として含まれています。
リストには Values オブジェクト、つまり独自のクラスが含まれていると述べたように、これを正しく機能させるには toString() をオーバーライドする必要があります。
このコードは機能します。VO
あなたの値オブジェクトクラスであると仮定します。
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
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 );
}
String[] array = list.toArray(new String[list.size()]);
ここで何をしていますか:
String[]
arrayは、変換するString
必要
のある配列です。ArrayList
ArrayList
にあるVOオブジェクトのリストです。List#toArray(String[] object)
ListオブジェクトをArrayオブジェクトに変換する方法です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<String> countryList = Arrays.asList(countries);
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);