Добавление строки [][] объекта

#java #android

#java #Android

Вопрос:

Как я могу добавить эту строку [][] элемент данных.

 String[][] data = new String[][] {{},{},{"Link 1","Link 2"},{},{}};
  

Ожидаемый результат:

 data = new String[][] {{"value1,value2"},{},{"Link 1","Link 2"},{},{"value3,value4"}};
  

Комментарии:

1. Откуда берется «значение1, значение2»?

2. из массива json на стороне сервера

3. Можете ли вы уточнить, что вы хотите сделать? У вас есть строки с новыми значениями? Откуда вы знаете, куда они должны идти?

4. итак .. вы хотите добавить что к чему?

5. скажем, добавьте String = «element1,element2,element3»; в третью позицию в данных

Ответ №1:

Массивы имеют фиксированную длину, поэтому, если вы хотите добавить элементы в пустой массив, вам нужно создать другой с достаточной емкостью.

 String[][] data = new String[][] {{},{},{"Link 1","Link 2"},{},{}};

data[0] = new String[]{"value1,value2"};
data[4] = new String[]{"value3,value4"};
  

дает ожидаемое значение

 [["value1,value2"],[],["Link 1","Link 2"],[],["value3,value4"]]
  

Теперь, если вы хотите добавить строку "element1,element2,element3" в 3-ю позицию:

 int oldLen = data[2].length;
String[] arr = new String[oldLen   1];
System.arraycopy(data[2], 0, arr, 0, oldLen);
arr[oldLen] = "element1,element2,element3";
data[2] = arr;
  

и данные теперь должны быть:

 [["value1,value2"],[],["Link 1","Link 2","element1,element2,element3"],[],["value3,value4"]]
  

Комментарии:

1. где фигурные скобки ?

2. newStr = newStr.replace("[", "{") и newStr = newStr.replace("]", "}") чтобы получить фигурные скобки.

3. @Dimitri Какие фигурные скобки? Я сделал код вручную, но я считаю, что он компилируется. 2-я строка (после каждого примера) — это строковое представление массива.

4. следует заменить все «[» на «{» и «]» на «}»

5. Нет. {} может использоваться только для инициализации массива. Правильный способ печати массива — квадратные скобки, например, android.util . Arrays.arrayToString() (этот метод некорректно обрабатывает многомерные массивы)