java中的2D ArrayList

问题描述 投票:1回答:4

我有一个2D ArrayList,我想从2D ArrayList中的那些中获取一个特定的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...
    }
}
java arrays arraylist
4个回答
5
投票

从顶部开始:

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

7
投票

是的,这是可能的。

因为当你调用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,并用十个项目填充它们。


1
投票

编辑:这个答案是针对问题的原始版本(这有点难以理解)。

如果我理解正确,您希望将多个列表拼凑成一个。

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

1
投票

是的,当然,您可以从ArrayList中选择ArrayList。为此,您可以按照以下两个步骤操作:

  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(); 
    }
© www.soinside.com 2019 - 2024. All rights reserved.