如何在Java中同时迭代两个列表?
我试图迭代两个数组列表来调用一个名为findProfit(ele,c)的函数,但我对如何正确操作感到困惑。请提供所有可能的代码解决方案如何在Java中同时迭代两个列表?,java,loops,arraylist,Java,Loops,Arraylist,我试图迭代两个数组列表来调用一个名为findProfit(ele,c)的函数,但我对如何正确操作感到困惑。请提供所有可能的代码解决方案 public void calProfitIndex(ArrayList<ArrayList<Package>> elemetList,ArrayList<Integer> capacity){ ....ArrayList<Package> ele: elemetList && Intege
public void calProfitIndex(ArrayList<ArrayList<Package>> elemetList,ArrayList<Integer> capacity){
....ArrayList<Package> ele: elemetList && Integer c: capacity...{
findProfit(ele,c);
}
}
public void calProfitIndex(ArrayList元素列表,ArrayList容量){
..阵列列表元素:元素列表和整数c:容量{
findProfit(ele,c);
}
}
您可以通过列表迭代器来完成
public void calProfitIndex(ArrayList<ArrayList<Package>> elemetList,ArrayList<Integer> capacity){
Iterator elemetListIterator=elemetList.iterator();
Iterator capacityIterator=capacity.iterator();
while(elemetListIterator.hasNext() && capacityIterator.hasNext()) {
ArrayList<Package> elemet=(ArrayList<Package>) elemetListIterator.next();
Integer cap=(Integer) capacityIterator.next();
}
}
public void calProfitIndex(ArrayList元素列表,ArrayList容量){
迭代器elemetListIterator=elemetList.Iterator();
迭代器capacityIterator=容量。迭代器();
while(elemetListIterator.hasNext()&&capacityIterator.hasNext()){
ArrayList elemet=(ArrayList)elemetListIterator.next();
整数cap=(整数)capacityIterator.next();
}
}
如果您想同时迭代两个列表,则倾向于建议您应该有一个复合对象列表,每个对象都包含一个包
引用和一个整数容量。(讲座结束)
但是,如果要同时迭代两个列表,您有几个选项:
1) 对两个列表使用显式迭代器:
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");
循环中的循环“gimmetehcodez”问题在SOI上是不需要的,需要同时迭代这两个问题
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);
....
}
}
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");