6

ArrayList に変換する必要があるカンマ区切りの文字列があります。私はこのようにしてみました

import java.util.ArrayList;
import java.util.Arrays;

    public class Test {

        public static void main(String[] args) {

            String CommaSeparated = "item1 , item2 , item3";

            ArrayList<String> items = (ArrayList)Arrays.asList(CommaSeparated.split("\\s*,\\s*"));

            for(String str : items)
            {
                System.out.println(str);
            }

        }

    }

示されているようにランタイムエラーが表示されます

Exception in thread "main" java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
    at com.tradeking.at.process.streamer.Test.main(Test.java:14)

リストを強制的にarrayListに変換しようとしていたので。

4

5 に答える 5

19

ArrayListによって返されるはArrays.asListではありませんjava.util.ArrayList。ですjava.util.Arrays.ArrayList。したがって、にキャストすることはできませんjava.util.ArrayList

java.util.ArrayListクラスのコンストラクターにリストを渡す必要があります。

List<String> items = new ArrayList<String>(Arrays.asList(CommaSeparated.split("\\s*,\\s*")));

または、単に結果を割り当てることができます。

List<String> items = Arrays.asList(CommaSeparated.split("\\s*,\\s*"));

ただしArrays.asList、固定サイズのリストを返します。何も追加または削除することはできません。何かを追加または削除する場合は、最初のバージョンを使用する必要があります。

PS:Listの代わりに参照型として使用する必要がありArrayListます。

于 2013-08-07T13:12:31.300 に答える
2

キャンディーのようにオブジェクトをキャストすることはできません。Arrays.asList()を返さないArrayListため、キャストできません (変更不可能なリストを返します)。

ただし、できることnew ArrayList(Arrays.asList(...));

于 2013-08-07T13:12:37.600 に答える
1

以下のコードを使用してみてください。

文字列[] 温度;

    /* delimiter */
    String delimiter = ",";
    /*
     * given string will be split by the argument delimiter provided.
     */
    temp = parameter.split(delimiter);
    ArrayList<String> list = new ArrayList<String>();

    for (int l = 0; l < temp.length; l++)

    {

        list.add(temp[l]);

    }
于 2013-08-07T13:20:46.183 に答える
1

絶対にする必要がありArrayListますか?通常、最も一般的な形式を使用します。大丈夫な場合は、試してListみてください:

List<String> items = Arrays.asList(...);

現在と同じ方法で繰り返し処理できます。

于 2013-08-07T13:13:21.657 に答える
1
String CommaSeparated = "item1 , item2 , item3";     
ArrayList<String> items = new ArrayList(Arrays.asList(CommaSeparated.split("\\s*,\\s*")));
for(String str : items)
{
    System.out.println(str);
}
于 2013-08-07T13:20:41.253 に答える