2015-11-06 135 views
0

我似乎在解決問題的邏輯時遇到了麻煩。我正在嘗試做的是有一個數組列表。每個數組包含2個字符串。迭代陣列列表並打印陣列中的每個元素

我想遍歷我的列表,然後打印數組的元素。我似乎卡在打印第一個數組(這是我的代碼所做的),儘管我陷入了邏輯。

public static void main(String[] args) { 
    List<List<String>> addresses = new ArrayList<List<String>>(); 

    ArrayList<String> singleAddress1 = new ArrayList<String>(); 
    singleAddress1.add("17 Fake Street"); 
    singleAddress1.add("18 Fake Street"); 
    ArrayList<String> singleAddress2 = new ArrayList<String>(); 
    singleAddress2.add("Phoney town"); 
    singleAddress2.add("not real town"); 
    ArrayList<String> singleAddress3 = new ArrayList<String>(); 
    singleAddress3.add("sillyname town"); 
    singleAddress3.add("alsosilly town"); 
    addresses.add(singleAddress1); 
    addresses.add(singleAddress2); 
    addresses.add(singleAddress3); 

    System.out.print("Original contents of al: " + addresses + "\n"); 
    Iterator itr = addresses.iterator(); 
    while (itr.hasNext()) { 
     Object element = itr.next(); 
     System.out.print(element + "\n"); 
     for (int i = 0; i < singleAddress1.size(); i++) { 
      System.out.println(singleAddress1.get(i)); 
     } 
     itr.remove(); 
    } 
} 
} 
+0

你gettingg有哪些誤區?我注意到的一件事是在內循環中,你不使用元素,但singleaddress1 – therealprashant

+0

1)你有列表的列表,而不是數組列表。 2)你總是從列表'singleAddress1'中打印元素,而不是從'itr.next()'返回的列表中的元素。 – SubOptimal

回答

2

,而你遍歷外數組列表addresses,在內部你最終迭代上同singleAddress1,而不是所有的列表元素,你會從迭代器使用for (int i = 0; i < singleAddress1.size(); i++) {得到的。

你的迭代循環應該是:

Iterator<List<String>> itr = addresses.iterator(); 
while (itr.hasNext()) { 
    List<String> element = itr.next(); 
    ^^^^^^^^^^^^ 
    System.out.print(element + "\n"); 
    for (int i = 0; i < element.size(); i++) { 
         ^^^^^^^^ 
     System.out.println(element.get(i)); 
    } 
    itr.remove(); 
} 
+0

不會顯示itr.next()中的錯誤,因爲它返回一個對象,我們需要對它進行類型轉換 – therealprashant

+1

它在Iterator中添加了類型.. – SMA

+0

我接受了這個作爲我的問題的答案。謝謝。我確實注意到我只從singleAddress1獲取項目。邏輯是健全的。我不知道我可以在列表中使用迭代器 aswel。謝謝! – Nina

1

你爲什麼不使用一個簡單的循環for-each

for(List<String> list:addresses) 
{ 
    for(String str:list) 
    { 
     System.out.println(str); 
    } 
} 
+0

看到OP也在刪除該條目,並使用'itr.remove()' – SMA

+0

@SMA是的,我知道:) 我想也許OP只是做它,使循環工作 –