2016-04-29 67 views
0

每個值我有一個數組列表包含這樣JAVA獲取的ArrayList中

[[asd, asswwde, efef rgg], [asd2223, asswwd2323e, efef343 rgg]] 

兩個列表 我的代碼是

ArrayList<String> create = new ArrayList<String>(); 
ArrayList<String> inner = new ArrayList<String>(); 
ArrayList<String> inner1 = new ArrayList<String>(); 
inner.add("asd"); 
inner.add("asswwde"); 
inner.add("efef rgg"); 

inner1.add("asd2223"); 
inner1.add("asswwd2323e"); 
inner1.add("efef343 rgg"); 

create.add(inner.toString()); 
create.add(inner1.toString()); 

我已經通過的各項指標之一來獲取所有值一個arraylist

那麼什麼是最好的方式來獲得這些所有的價值一個接一個。 我在Eclipse Mars上使用JAVA。

+0

爲了避免人們感到沮喪 - 你應該改述你的問題。你的問題實際上不是關於嵌套'ArrayList',而是如何解析java'String''「[asd2223,asswwd2323e,efef343 rgg]」'回單個元素(也是'String')。 – YoYo

回答

1

您可以通過外部ArrayList要循環,然後遍歷這個ArrayList內的每個ArrayList,您可以通過這樣做以下:

for (int i = 0; i < outerArrayList.size(); i++) 
{ 
    for (int j = 0; j < outerArrayList.get(i).size(); j++) 
    { 
     String element = outerArrayList.get(i).get(j); 
    } 
} 

這裏是另一個verison您可能會發現更容易理解,但基本上是相同的:

for (int i = 0; i < outerArrayList.size(); i++) 
{ 
    ArrayList<String>() innerArrayList = outerArrayList.get(i) 

    for (int j = 0; j < innerArrayList.size(); j++) 
    { 
     String element = innerArrayList.get(j); 
    } 
} 

或可選地再次使用foreach循環:

for (ArrayList<String> innerArrayList : outerArrayList) 
{ 
    for (String element : innerArrayList) 
    { 
     String theElement = element; 
    } 
} 

值得注意的是你的ArrayList看起來包含不同類型的元素 - 這絕對是你想要做的嗎?另外,確保你用「」包圍你的字符串,除非它們是變量名 - 它不會出現。

編輯:根據您的更新更新元素類型字符串。

我也建議你改變的類型,你的創造ArrayList,像下面,因爲你知道它會被存儲ArrayList類型的多個元素:

ArrayList<ArrayList> create = new ArrayList<ArrayList>(); 
+0

前兩個示例將跳過最後一個元素。 – Pete

+0

@PietervandenHam正確,謝謝你指出,有一個習慣堅持-1無處不在:p – James

+0

@詹姆斯我跟着你的第二個答案,這給了我錯誤。 – user3441151

3

只要使用兩個嵌套的循環:

​​

您可能還想考慮用適當的對象替換內部列表。

+0

我只是用我的代碼更新我的帖子 – user3441151

+1

@ user3441151爲什麼你將列表轉換爲字符串?這會讓你的生活更加困難,當你想要提取值... – assylias

+0

由於要求,請根據我的要求更新您的代碼。 – user3441151

1

嘗試使用for循環嵌套在foreach循環是這樣的:

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

在你的代碼中s.get(i)中的's'是什麼。 – user3441151

0

我不知道如果數據結構需求的一部分,但它是若使用ArrayList的你外的ArrayList更好的構建作爲通用類型。

ArrayList<ArrayList<String>> create = new ArrayList<ArrayList<String>>(); 
ArrayList<String> inner = new ArrayList<String>(); 
ArrayList<String> inner1 = new ArrayList<String>(); 

... 

create.add(inner); 
create.add(inner1); 

然後,你可以把它們打印出來是這樣的:

for(List list : create) { 
    for (String val : list) { 
     System.out.println(val); 
    } 
} 

Othewise,如果你堅持你的原代碼,當你添加到您所使用的toString()方法上的外部列表數組列表。這將產生由括號括起來的逗號分隔的值串(例如[val1,val2])。如果你想實際打印輸出單獨的數值去掉括號,等等,你必須將字符串轉換回做這樣一個數組(或列表):

for (String valList : create) { 
    String[] vals = valList.substring(1, val.length() - 1).split(","); 
    for (String val : vals) { 
     System.out.println(val.trim()); 
    } 
} 
相關問題