2D ArrayList в Java - PullRequest
       6

2D ArrayList в Java

1 голос
/ 21 февраля 2012

У меня есть 2D ArrayList, и я хочу взять один определенный ArrayList из тех, которые находятся внутри 2D ArrayList.

Возможно ли это?Если да, как я могу это сделать?Как именно работает 2D arrayList, я много об этом читал, но до сих пор не могу понять.Мой 2D ArrayList имеет такую ​​форму:

ArrayList<ArrayList<Items>> arrayList = new ArrayList<ArrayList<Items>>();

for (int i = 0; i < 10; i++) {
    ArrayList<Items> row = new ArrayList<Items>();

    for (int j = 0; j < 500; j++)
    {
        // create the items...
    }
}

Ответы [ 4 ]

7 голосов
/ 21 февраля 2012

Да, это возможно.

Поскольку у вас есть ArrayList< ArrayList<Items> >, когда вы звоните arrayList.get(), это вернет ArrayList.Затем вы можете пойти дальше и сделать все, что вам нужно.

Например:

for(int i = 0; i < arrayList.length(); i++){
   ArrayList<Items> innerList = arrayList.get(i);
   for(int j =0; j < 10; j++){
       innerList.add(new Items());
   }
 }

Это займет ваши десять ArrayLists, которые вы создали выше, и заполнит каждый из них десятью элементами.

5 голосов
/ 21 февраля 2012

Начиная сверху:

Is this possible?

Да, довольно просто на самом деле:

ArrayList innerList = arrayList.get(listIndex);

How does the 2D ArrayList work?

По сути, этофункционирует как массив массивов, поэтому при доступе к одному элементу 2D-списка возвращает ArrayList, который необходимо дополнительно вызвать get(), чтобы получить нужный элемент.

Пример:

ArrayList innerList = (ArrayList) arrayList.get(listIndex); // returns an arraylist
Item item = (Item) innerList.get(innerListIndex); // returns your item
1 голос
/ 03 марта 2019

Да, конечно, вы можете выбрать ArrayList из ArrayList. Для этого вы можете выполнить следующие 2 шага:

  1. Инициализировать и объявить 2D ArrayList

По вашему вопросу у вас есть 10 строк (i = 10) и 500 столбцов (j = 500).

ArrayList<ArrayList<Integer>> arrayList = new ArrayList<ArrayList<Integer>>();

    for (int i = 0; i < 10; i++) {
        ArrayList<Integer> row = new ArrayList<Integer>();

        for (int j = 0; j < 500; j++)
        {
            //add any integers into "row" ArrayList
            row.add(2);
        }
        //add this above 1d "row" ArrayList to our 2D "arraylist" 
        arrayList.add(row);
    }
  1. Извлечение элементов из ArrayList
    for (int i = 0; i < arrayList.size(); i++) { 
        for (int j = 0; j < arrayList.get(i).size(); j++) { 
            System.out.print(arrayList.get(i).get(j) + " "); 
        } 
        System.out.println(); 
    }
1 голос
/ 21 февраля 2012

РЕДАКТИРОВАТЬ: этот ответ для оригинальной версии вопроса (который было немного трудно понять).

Если я вас правильно понимаю, вы хотите объединить множество списков в один.

List<List<String>> listOfLists = new ArrayList<List<String>>();
for (int i = 0; i < 5; i++) {
    List<String> thisList = Arrays.asList("a", "b", "c");
    listOfLists.add(thisList);
}

// flatten
List<String> flattenedListOfStrings = new ArrayList<String>();
for (List<String> listOfString : listOfLists) {
    flattenedListOfStrings.addAll(listOfString);
}

// test
for (String string : flattenedListOfStrings) {
    System.out.print(string);
}

Выходы:

abcabcabcabcabc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...