2012-02-20 198 views
1

我有一个2D ArrayList,我想从2D ArrayList中的那些中取出一个特定的ArrayList。java中的2D ArrayList

这可能吗? 如果是,我该怎么做? 2D arrayList是如何工作的,我已经阅读了很多内容,但仍然无法理解。我的二维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... 
    } 
} 
+2

我想你需要存储的信息... – 2012-02-20 22:29:42

+2

阿诺德的新方法,如果有人编辑您的文章,并提高它的质量,作为一般规则,你不应该回滚到该帖子的以前版本。请阅读[常见问题](http://stackoverflow.com/FAQ)了解关于此主题的更多信息。 – 2012-02-20 22:36:31

+0

好的理查德,我很抱歉 – 2012-02-20 22:46:58

回答

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()); 
    } 
} 

这将带你做上面您的十周的ArrayList,并填写每个人的十个项目。

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