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

不知道你到底想要achar[]还是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 回答