2012-03-13 4 views
0

私はここに私のコードの一部である私は、この場合には、出力は2 *(= 2 2)と9 *(= 6 6)である必要があり、同等の要素を取得したい二つのリストa = {1,2,2,5,6,6,6,7}b = {2,3,3,6,6,6,8} を持ってイテレータの内容をJavaの別のものに渡すにはどうすればよいですか?

Iterator aIt = a.iterator(); 
    Iterator bIt = b.iterator(); 
    Iterator tempIt = b.iterator(); 

    int aNode = (Integer)aIt.next(); 
    int bNode = (Integer)bIt.next(); 
    Boolean isEquals = false; 

    while(aIt.hasNext()||bIt.hasNext()){ 
     while(aNode<bNode){ 
      aNode = (Integer)aIt.next(); 
     } 
     while(aNode>bNode){ 
      bNode = (Integer)bIt.next(); 
     } 
     while(aNode==bNode){ 
      tempIt = bIt; 
      while(aNode==bNode){ 
       System.out.println(aNode + " = " + bNode); 
       bNode = (Integer)tempIt.next(); 
      } 
      aNode = (Integer)aIt.next(); 
      tempIt = bIt; 
      bNode = (Integer)tempIt.next(); 
      isEquals = true; 
     } 
     if(isEquals){ 
      bIt = tempIt; 
      isEquals = false; 
     } 
    } 

私はコードを実行した後、私が渡すのはbItからtempItへの参照ではないことを理解しています。これを達成するためにイテレータを本当に使用したいのであれば、解決策はありますか?どうもありがとう!

+0

a、bから(1,0)(2,0)(4,3)(4,4)(4,5)(5,3) 'になる方法を理解していない - どのデータ操作したいですか? – assylias

+0

@assyliasこれらはインデックスです。慎重に読む。 – Juvanis

+0

私には分かりませんので、どちらかといえば説明してもらえますか? –

答えて

2

Javaでサポートされていないイテレータを複製するように思えます(clone()メソッドはプライベートです)。 イテレータにはデータが含まれていないので、リストのインターフェイスとして考える必要があります。だから、おそらくイテレータはここでは最も理想的な解決策ではありません。

+0

+1。あなた自身のインデックスを把握し、問題は解決されます。 –

-1

イテレータを使用しないで、リスト自体を使用する方が簡単な方法だと思っています。

あなたのリストはAとBがArrayList<Integer>のあるのであれば、それは次のようになります。私はそれは正しい考えだということが、コンパイルされていませんでした---これらの線に沿って

public void printMatch(ArrayList<Integer> A, ArrayList<Integer> B) { 
    for(int i = 0; i < A.length(); i++) { 
     for(int j = 0; j < B.length(); j++) { 
      if(A.get(i).equals(B.get(j))) { 
       System.out.println("Match!" + A.get(i)); 
      } 
     } 
    } 
} 

か何か。

+1

wtf?両方のリストに値が表示されているかどうかを検出します。それは尋ねられたものではない(改訂された質問ではなく、最初のものでもない)。 –

関連する問題