2017-11-27 17 views
-6

ArrayListsを呼び出すと、というファンクションが呼び出されます。findProfit(ele、c)しかし、私はそれを行う正しい方法に混乱してきています。コードのすべての解決策を提供してください。Javaで2つのリストを同時に反復する方法は?

public void calProfitIndex(ArrayList<ArrayList<Package>> elemetList,ArrayList<Integer> capacity){ 
    ....ArrayList<Package> ele: elemetList && Integer c: capacity...{ 

       findProfit(ele,c); 
    } 
} 
+1

ループ内のループ – XtremeBaumer

+0

"**私はこのコードを使用しないでください**"という質問は不要です。 – ParkerHalo

+0

私は同時に両方を反復する必要があります –

答えて

1

あなたは、同時に2つのリストを反復処理したい

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(); 
     } 
    } 
0

あなたはそれぞれがPackageを含む、複合オブジェクトのリストを持っている必要があることを示唆する傾向にあるリストのIteratorによってそれを行うことができます参照と整数の容量。 (講義の終わり)。

しかし、あなたは、同時に2つのリストを反復処理したい場合は、いくつかのオプションがあります:

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)が1つのリストおよび他のためのIteratorの拡張forを使用します

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"); 
関連する問題