2016-11-09 48 views
0

单圈我有2个的ArrayList:与2倍的ArrayList

ArrayList<LatLng> list1 
ArrayList<String> list2 

我尝试用2 ArrayList的一环。例。

for(LatLng a : list1 [i dont know what put here] String b : list2) 
{ 

Log.d("Response", String.valueOf(a, b)); 

} 

我该怎么办?

+1

它们是否被相同的索引绑定? (即list1上的第一个位置与list2中的第一个位置配对),如果是这样,只需要使用一个正常循环。 ).blablabla list2.get(i).blablabla – leofontes

+0

你能更精确吗?二维数组看起来不像这样。 – estoke

回答

3

您不能使用循环超过2只列出了一次增强,唯一的选择是使用一个正常的循环:

//Assuming list1 and list2 are identical sizes: 
for (int i = 0; i < list1.size(); i++){ 
    LatLng latLng = list1.get(i); 
    String s = list2.get(i); 
    //Do something with them 
} 

如果你真的想这样做在1圈,你可能考虑做一个组合对象:

public class CombinationObject{ 

    private LatLng latLng; 
    private String string; 

    //GETTERS & SETTERS 
} 

然后,您可以添加元素的CombinationObject列表:List<CombinationObject> list;和循环刚过奇异名单。

for (CombinationObject co : list){ 
    LatLng latLng = co.getLatLng(); 
    String s = co.getString(); 
    //Do something... 
} 
+0

大小是相同的,所以我使用第一个答案,但这个循环做从数组的最后一个元素运行,应该从第一个运行,我想以相反的顺序工作 – patrick1980

+1

使用'Collections.reverse(list)'来反向命令。或者按相反顺序添加条目,或创建自己的列表实现。你没有在你的问题中指定相反的顺序... –

+0

我没有在我的问题中指定这个,因为当我使用1 Arraylist是好的,从1到10,但是当我使用2 Arraylist时,它是从10到1 – patrick1980

1

你的问题不是很清楚,但我认为你试图实现的是从每个ArrayList获取相应索引的值?如果是这样,你可以这样实现它:

ArrayList<LatLng> list1; 
ArrayList<String> list2; 

if(list1.size() != list2.size()){ 
    Log.e("Arrays are not of the same size!"); 
} 
else{ 
    for(int i = 0; i<list1.size(); i++){ 
     String s = list1.get(i).toString() + " : " + list2.get(i).toString(); 
     Log.d("Response", s); 
    } 
}