Добавление элемента в двухмерный ArrayList - PullRequest
6 голосов
/ 04 марта 2012

Я знаю, что для массивов вы можете добавить элемент в двумерный массив следующим образом:

 array[0][1] = 17; //just an example

Как я могу сделать то же самое с ArrayList?

Ответы [ 6 ]

6 голосов
/ 04 марта 2012
myList.get(0).set(1, 17);

возможно?

Это предполагает вложенный ArrayList, т. Е.

ArrayList<ArrayList<Integer>> myList;

И выбор на ваш выбор слов: Это назначает aзначение для определенного места во внутреннем списке, оно не добавляет единицу.Но как и ваш пример кода, поскольку массивы имеют фиксированный размер, поэтому вам нужно создать их в правильном размере и затем присвоить значения отдельным слотам элемента.

Если вы действительно хотите добавить элемент, тогда, конечно, это .add(17), но это не то, что сделал ваш код, поэтому я пошел с кодом выше.

2 голосов
/ 04 марта 2012
outerList.get(0).set(1, 17);

с внешним списком, равным List<List<Integer>>.

Помните, что двухмерные массивы не существуют.Они на самом деле массивы или массивы.

1 голос
/ 03 января 2014
ArrayList<ArrayList<Integer>> FLCP = new ArrayList<ArrayList<Integer>>();
FLCP.add(new ArrayList<Integer>());
FLCP.get(0).add(new Integer(0));

Каждый элемент должен быть создан.Здесь внешний ArrayList имеет элемент ArrayList, и сначала вам нужно добавить элемент для ссылки на него, используя метод get.

Некоторые дополнительные примечания;после прочтения других ответов и комментариев:

1> Каждый элемент должен быть создан;инициализация отличается от реализации (см. flexJavaMysql * ответ )

2> В Java существуют 2-мерные массивы;C # не имеет двухмерных массивов (см. JB Nizet s answer )

1 голос
/ 04 марта 2012
 ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
 data.add(new ArrayList<String>());
 data.get(0).add("String");

ArrayList<ArrayList<String>> содержит элементы типа ArrayList<String>

Каждый элемент должен быть инициализирован

Эти элементы содержат элементы типа String

Чтобы вернуть String "String" в 3-строчном примере, вы должны использовать

String getValue = data.get(0).get(0);
0 голосов
/ 27 марта 2016
String[] myList = {"a","b","c","d"};
ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
data.add(new ArrayList<String>());
int outerIndex =0;
int innerIndex =0;
for (int i =0; i<list.length; i++) {
     data.get(outerIndex).add(innerIndex, list[i]);
     innerIndex++;
 }
System.out.println(data);

Простой цикл for для добавления данных в многомерный массив.
Для каждого внешнего индекса необходимо добавить

data.add(new ArrayList<String>());

, затем увеличить внешний индекс и сбросить внутренний индекс.
Это бы выглядело примерно так.

public static String[] myList = {"a", "b","-","c","d","-","e","f","-"};

public static ArrayList<ArrayList<String>> splitList(String[] list) {

    ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
    data.add(new ArrayList<String>());
    int outerIndex =0;
    int innerIndex =0;
    for (int i=0; i<list.length; i++) {
        System.out.println("will add: " + list[i]);
        if(!list[i].contains("-")) {
            System.out.println("outerIndex: " + outerIndex +" innerIndex: "+ innerIndex);
            data.get(outerIndex).add(innerIndex, list[i]);
            innerIndex++;
        } else {
            outerIndex++;    // will move to next outerIndex
            innerIndex = 0;  // reset or you will be out of bounds
            if (i != list.length-1) {
                data.add(new ArrayList<String>());  // create an new outer index until your list is empty
            }
        }
   }  
    return data;
}
public static void main(String[] args) {
    System.out.println(splitList(myList));
}
0 голосов
/ 10 мая 2014

способ, который я нашел лучшим и удобным для меня, заключался в том, чтобы объявить ur 2d arrayList, а затем и обычный моноразмерный массив.

ArrayList<ArrayList<String>> 2darraylist = new ArrayList<>();
ArrayList<String> 1darraylist=new ArrayList<>();

, затем заполнить список '1D', а затем добавить 1Dв список 2D-массивов.

1darraylist.add("string data");
2darraylist.add(idarraylist);

это будет работать до тех пор, пока ваша задача состоит в том, чтобы просто добавить элементы в список.Если вы хотите добавить их в определенные позиции в списке, то .get (). set ();это то, что ты хочешь придерживаться.

...