15

ArrayList を String[] に変換するのを手伝ってください。ArrayList には Object(VO) 型の値が含まれます。

例えば、

問題は、国のリストを文字列配列に変換し、並べ替えてからリストに入れる必要があることです。ただし、ClassCastException が発生しています。

4

6 に答える 6

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()]);
于 2012-07-13T05:38:45.503 に答える
10

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()]);

ArrayStoreExceptiondueは、後で呼び出されるネイティブメソッドによって必要とされる型VOではありません。StringarraycopytoArray

于 2012-07-13T05:50:49.323 に答える
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 );
}
于 2012-07-13T05:47:23.547 に答える
4
String[] array = list.toArray(new String[list.size()]);

ここで何をしていますか:

  • String[]arrayは、変換するString必要 のある配列です。ArrayList
  • リストは、手元ArrayListにあるVOオブジェクトのリストです。
  • List#toArray(String[] object)ListオブジェクトをArrayオブジェクトに変換する方法です
于 2012-07-13T05:51:44.600 に答える
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<String> countryList = Arrays.asList(countries);
于 2012-07-13T05:40:08.297 に答える
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);
于 2015-06-23T12:03:20.083 に答える