Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中同时迭代两个列表?_Java_Loops_Arraylist - Fatal编程技术网

如何在Java中同时迭代两个列表?

如何在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

我试图迭代两个数组列表来调用一个名为findProfit(ele,c)的函数,但我对如何正确操作感到困惑。请提供所有可能的代码解决方案

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");