1

配列リストを文字列配列に変換しようとしていますが、例外が発生します。誰か助けてください。

ArrayList のサイズ: 1
文字列配列のサイズ: 2

次のコードを使用しています。

String[] StringArray ={};
StringArray = ArrayList.toArray(new String[ArrayList.size()]);

したがって、StringArray現在の長さは 1 です。しかし、2 にする必要があります。私の問題は、String Array のサイズが ArrayList より大きい場合、arraylist を StringArray に変換する方法です。

どうやってやるの?みんな私を助けてください。

4

4 に答える 4

4

ArrayListより大きなString配列に変換する場合は、入力toArray()する配列をパラメーターとして使用して渡します。配列のサイズが必要以上の場合、残りの要素は になりますnull。配列が小さい場合 - サイズが の新しい配列が返されlist.sizeます。

すべてjavadocから取得

ArrayList<String> list  = new ArrayList<>();
list.add("abc");

String[] StringArray = new String[2];
StringArray = list.toArray(StringArray);

その場合、リストのサイズは 1 ですStringArrayが、サイズは 2 であり、配列の末尾に null 値が追加されます。

于 2013-05-22T12:09:00.130 に答える
0

配列を引数としてメソッドに渡すtoArrayと、リストの項目が取り込まれ、それ以外の場合は の配列が返されますObject。リストより大きいサイズの配列を引数として渡して、より大きなサイズの配列を取得できます。次の例で説明します。

     public static void main(String[] args) throws FileNotFoundException {
        List<String> list  = new ArrayList<>();
        list.add("One");
        System.out.println("list Size: " + list.size());

        //If we pass an array as argument it will be filled with items from list and then returned. Here array size is (list.size +2 )
        String[] stringArray = list.toArray(new String[2]);
        System.out.println("stringArray Size: " + stringArray.length);

        //If we do not pass an array as argument we get Object[] of same size
        Object[] objects = list.toArray();
        System.out.println("objects Size: " + objects.length);

        // Java 8 has option of streams to get same size array
        String[] stringArrayUsingStream = list.stream().toArray(String[]::new);
        System.out.println("stringArrayUsingStream Size: " + stringArrayUsingStream.length);
    }

上記のように、Java 8 でもストリームを使用するオプションがあります。出力は次のとおりです。

list Size: 1 stringArray Size: 2 objects Size: 1 stringArrayUsingStream Size: 1

于 2015-06-23T11:35:18.400 に答える
0
 String[] arr = new String[list.size()];
 arr = list.toArray(arr);
于 2013-05-22T12:05:24.457 に答える