2

基本的に、動的な 2d ArrayList を作成しています。

private ArrayList<char[]> myArray;

以下のコードはループで実行されます。すべての文字を配列に格納するために、「同じ長さ」のランダムな文字列がいくつか与えられます。

ながら(体)

char[] temp = myString.toCharArray();
myArray.add(temp);

したがって、すべての文字が ArrayList に挿入された後、myArray を通常の配列に変換したいと考えています。(なぜ?将来的に役立つからです)そして、私はここで間違っていると思います:

charArray = (char[][]) myArray.toArray();
//declaration of 'charArray' is already done at the start of the class.

したがって、問題は、チェックするためだけに「charArray」全体または任意の要素を出力しようとすると、「java.lang.NullPointerException」エラーが発生することです。

では、どうすれば 2d ArrayList を通常の配列に変換できますか? さまざまなソースを試しましたが、役に立ちませんでした。

ありがとうございました。

4

2 に答える 2

4

char[]最後に aまたは aが必要かどうかはわかりませんchar[][]。以下の両方のオプションを参照してください。

public static void main(String... args) throws Exception {
    List<char[]> myArray = new ArrayList<char[]>();
    myArray.add("string1".toCharArray());
    myArray.add("string2".toCharArray());
    myArray.add("string3".toCharArray());

    char[][] charArray2D = myArray.toArray(new char[0][0]);
    System.out.println(charArray2D.length); //prints 3

    StringBuilder s = new StringBuilder();
    for (char[] c : myArray) {
        s.append(String.copyValueOf(c));
    }
    char[] charArray1D = s.toString().toCharArray();
    System.out.println(charArray1D.length); //prints 21
}
于 2012-02-28T14:35:05.087 に答える
2

このようなもの:

public static void main(String[] args) {
    List<char []> list = new ArrayList<char []>();
    list.add("hello".toCharArray());
    list.add("world !".toCharArray());
    char[][] xss = list.toArray(new char[0][0]);
    for (char[] xs : xss) {
        System.out.println(Arrays.toString(xs));
    }
}

出力:

[h, e, l, l, o]
[w, o, r, l, d,  , !]
于 2012-02-28T14:41:10.220 に答える