2012-01-13 96 views
2

我真的需要一些幫助。我有一個列有4列和4行。我做了這樣的事情:Java列表 - 如何獲取多維列表的列值?

if(list.size()!=0){ 
Iterator it = list.iterator(); 
while(it.hasNext()){ 
    System.out.println(it.next().toString()); 
} 
} 

我也試過這樣:

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

但兩者有相同的結果:

[Ljava.lang.Object;@58e6b9bc 
[Ljava.lang.Object;@13ac133d 
[Ljava.lang.Object;@62313e2 
[Ljava.lang.Object;@68ee5d93 

我有一名維的名單,但與多維沒問題我真的很頭痛。請幫忙。

+0

你應該顯示填充'list'的代碼。 – home 2012-01-13 08:30:14

+0

列表中有什麼? – 2012-01-13 08:30:25

+0

你在列表中有一個List還是一些任意的對象?你打算打印出來還是想着什麼? – 2012-01-13 08:32:05

回答

3

看起來像你的列表包含對象數組作爲元素。

[Ljava.lang.Object;@58e6b9bc 

這意味着您嘗試打印的對象是數組。要獲得完整的列表內容,還必須遍歷此對象數組(每個列表元素)。試試這個:

for(int i=0; i<list.size(); i++) { 
Object[] objArr = (Object[]) list.get(i); 
for(Object obj: objArr){ 
    System.out.println(obj); 
    } 
} 
+0

感謝傢伙......它的工作。我對這件事很陌生。呵呵.. Java有如此陡峭的學習曲線。 – NinjaBoy 2012-01-13 08:37:00

+1

@無論投票結果如何:我的投票沒有問題,但你也應該告訴我我的錯誤,以便下一次改進。 – 2012-01-13 08:56:39

+0

這很有趣。你怎麼知道它是一個數組?我想知道。 – 2012-01-13 11:33:42

2

我想你的列表包含另一個列表的數組。你必須添加另一個循環。

for(Object []ar:list) 
{ 
    for(Object ele:ar) 
    { 
    System.out.println(ele); 
    } 
} 
+1

@Downvoter:請關注添加評論! – adatapost 2012-01-13 08:56:31

1

如果您的列表中有一個名單,然後它會以這種方式工作:

 for (List<TypeOfYourObjectHere> element : list) { 
      for (Object subElement : element) { 
       System.out.println(subElement); 
      } 
     } 

如果一個數組,那麼:

for (TypeOfYourObjectHere[] element : list) { 
     for (Object subElement : element) { 
      System.out.println(subElement); 
     } 
    } 

請注意,如果您在外部列表中沒有可迭代的對象,而不必考慮其他方式,比如覆蓋toString()方法。

如果你告訴我們你想達到什麼目的,它也會有幫助。

+0

我不認爲第一種情況是可能的原因如果是這樣的話,它可能會像'[列表中的元素]一樣打印出來,但它不會像那樣打印,因此它可能不是列表中的列表。 – 2012-01-13 08:55:44

+0

我試了一下,所以它的工作原理。發帖之前,我總是嘗試使用代碼。 – 2012-01-13 11:32:41

+0

我不是在責怪你的代碼只是通知它並不是列表中的列表。 – 2012-01-14 15:02:05