2012-10-19 79 views
0

我有一个列表MyCollection的是表像如何从列表集合中获取特定元素?

myCollection = [[1,2,3,4],[1,2,3,4],[1,2,3,4]] 

集合遍历这个列表,并通过GET(I)的方法,我会得到一个特定的子表。

for (int i = 0; i < myCollection.size(); i++) { 
     System.out.println(myCollection.get(i)); 
} 

我试着为子表创建一个新的列表,并遍历它,但我得到的完整列表作为[1,2,3,4]

for (int i = 0; i < myCollection.size(); i++) { 
    List list = new ArrayList(); 
    list.add(myCollection.get(i)); 
     for (int j = 0; j < list.size(); j++) { 
     System.out.println("list.get(j) -- "+list.get(j).toString()); 
    }  
} 

如何得到这个子列表中的元素?

感谢

+2

你正在'for'元素的每次迭代中创建'List list'。 –

回答

1

试试下面的代码:

for (int i = 0; i < myCollection.size(); i++) 
{  
    List myList = myCollection.get(i); 
    for (int j = 0; j < myList.size(); j++) 
    { 
     System.out.println("myList.get(j) -- "+myList.get(j).toString());  
    } 
} 

什么,你正在做的是:

list.add(myCollection.get(i)); 

这条线将在指数i添加完整列表的list。所以,不需要将它添加到另一个列表中。只需将其存储在myList变量中,就像我一样。然后迭代。

+0

非常感谢:)这是我的期待,谢谢你的解释。 –

+0

快乐!我可以帮忙。 – Azodious

4

如何:

list.get(i).get(j) 
+0

这里的问题是第一个数组,我会得到长度为1,对于secong为2等等,因此无法获得第一个列表中的所有元素。假设我有3个元素,那么我得到第一个数组中的1个元素,2个数组中的2个元素以及3个数组中的所有元素。 :( –

1

你得到list,因为,你是存储在您的列表中list

此外,您已声明raw type列表,这不是一个好的做法。

您可以更希望得到从每个嵌套列表中的各个元素使用增强的for循环: -

myCollection = [[1,2,3,4],[1,2,3,4],[1,2,3,4]] 

for(List<Integer> list: myCollection) { 

    for (Integer intVal: list) { 
     System.out.print(intVal + " "); 
    } 
    System.out.println(); 
} 
+0

'myCollection.get(i)'不会返回'Integer'而是'List'(或一个数组),检查OP问题的第一部分。 –

+0

@LuiggiMendoza请清楚地阅读我的帖子。声明你的'List'就像那样,他会知道他错在哪里。 –

3

你可能想尝试这样的事:

List list = new ArrayList(); 
for (int i = 0; i < myCollection.size(); i++) { 
    list.add(myCollection.get(i)); 

} 

它也比较好分开您的打印机:

for (int j = 0; j < list.size(); j++) { 
     System.out.println("list.get(j) -- "+list.get(j).toString()); 
    } 
+0

其实我试图建立一个逻辑来动态地使用预先准备的语句插入大块的数据。如果我分开for语句,那么它将不起作用对我来说::(感谢回复 –

相关问题