web-dev-qa-db-ja.com

JavaでArrayListをString []に変換する方法、ArraylistにはVOオブジェクトが含まれます

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

例えば、

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

15
user1000535
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()]);
27
Pramod Kumar

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から呼び出されるためです。

10
Viktor Stolbin

ArrayListStringsが含まれる場合、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 );
}
7
Robin
_String[] array = list.toArray(new String[list.size()]);
_

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

  • _String[]_配列は、Stringを変換するために必要なArrayList配列です。
  • リストは、手元にあるVOオブジェクトのArrayListです
  • List#toArray(String[] object)は、ListオブジェクトをArrayオブジェクトに変換するメソッドです
4
GingerHead

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);
2
Sashi Kant

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);
2
i_am_zero