2D ArrayList к нормальному массиву Java - PullRequest
2 голосов
/ 28 февраля 2012

По сути, я создаю динамический 2d ArrayList.

private ArrayList<char[]> myArray;

Этот код ниже выполняется в цикле.Дается несколько случайных строк одинаковой длины для хранения всех символов в массиве.

while (body)

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 в обычный массив?Я пробовал много разных источников, но это не помогло.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 28 февраля 2012

Не уверен, хотите ли вы в конце char[] или 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
}
2 голосов
/ 28 февраля 2012

Примерно так:

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,  , !]
...