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は値Object(VO)を値として含みます。
あなたが言及したように、そのリストにはValuesオブジェクト、つまりあなた自身のクラスが含まれています。これを正しく動作させるにはtoString()をオーバーライドする必要があります。
このコードは機能します。 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
から呼び出されるためです。
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 );
}
_String[] array = list.toArray(new String[list.size()]);
_
ここで何をしていますか:
String[]
_配列は、String
を変換するために必要なArrayList
配列です。ArrayList
です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);