我正在尝试迭代两个 ArrayLists 来调用一个名为 findProfit(ele,c)的功能,但我对于正确的方法感到困惑。请提供所有可能的代码解决方案。
public void calProfitIndex(ArrayList<ArrayList<Package>> elemetList,ArrayList<Integer> capacity){
....ArrayList<Package> ele: elemetList && Integer c: capacity...{
findProfit(ele,c);
}
}
答案 0 :(得分:0)
您希望同时迭代两个列表会倾向于建议您应该有一个复合对象列表,每个复合对象包含Package
引用和整数容量。 (讲座结束)。
但如果你想同时迭代两个列表,你确实有一些选择:
1)对两个列表使用显式Iterator
:
Iterator<Package> pIter = elementList.iterator();
Iterator<Integer> cIter = capacity.iterator();
while (pIter.hasNext() && cIter.hasNext()) {
Package p = pIter.next();
Integer c = cIter.next();
...
}
if (pIter.hasNext())
System.err.println("Too few capacity items");
if (cIter.hasNext())
System.err.println("Too few Package items");
2)使用索引计数器:
if (elementList.size() != capacity.size())
System.err.println("Lists aren't the same size");
else {
for (int i = 0; i < elementList.size(); ++i){
Package p = elementList.get(i);
Integer c = capacity.get(i);
....
}
}
3)将增强型for
用于一个列表,将Iterator
用于另一个列表:
Iterator<Integer> cIter = capacity.iterator();
for (Package p : elementList){
if (!cIter.hasNext()) {
System.err.println("Too few capacity items");
break;
}
Integer c = cIter.next();
....
}
if (cIter.hasNext())
System.err.println("Too few Package items");