2011-08-10 14 views
2

私は現在、検索方法に取り組んでいます。検索された用語はデータベースを介して実行され、一致する製品は2つの整数フィールドを持つhashMapに追加されます。HashMapを繰り返す

は、ハッシュマップが行われた後、その後、項目が表示されるようにしている

、しかし、私は詳細を印刷するHashMapを取得し、トラブルを抱えている、ここに私のコード

public HashMap<Integer, Integer> bankSearch = new HashMap<Integer, Integer>(); 

と使用だ

Iterator it = bankSearch.entrySet().iterator(); 
    while (it.hasNext()) { 
     HashMap.Entry pairs = (HashMap.Entry)it.next(); 
     System.out.println(pairs.getKey() + " = " + pairs.getValue()); 
     if (bankItemsN[i] > 254) { 
      outStream.writeByte(255); 
      outStream.writeDWord_v2(pairs.getValue()); 
     } else { 
      outStream.writeByte(pairs.getValue()); // amount 
     } 
     if (bankItemsN[i] < 1) { 
      bankItems[i] = 0; 
     } 
     outStream.writeWordBigEndianA(pairs.getKey()); // itemID 
    } 

電流誤差

.\src\client.java:75: cannot find symbol 
symbol : class Iterator 
location: class client 
       Iterator it = bankSearch.entrySet().iterator(); 
       ^
.\src\client.java:77: java.util.HashMap.Entry is not public in java.util.HashMap 
; cannot be accessed from outside package 
         HashMap.Entry pairs = (HashMap.Entry)it.next(); 
          ^
.\src\client.java:77: java.util.HashMap.Entry is not public in java.util.HashMap 
; cannot be accessed from outside package 
         HashMap.Entry pairs = (HashMap.Entry)it.next(); 
                ^
3 errors 
Press any key to continue . . . 
あなたが取得している0
+1

をあなたは何のJavaコンパイラを使用している:

補遺

はここで近づき、両方実証し、いくつかの実際のコードですか?また、Javaジェネリックを使用していない特別な理由はありますか? – templatetypedef

答えて

8

エラーは、次のとおりである。

  • あなたはjava.util.Iterator

  • HashMap.Entryをインポートしませんでしたプライベート内部クラスです。また、あなたは、templatetypedefが言うように、イテレータのジェネリック版を使用し、またはのために、各構築使用する必要がありますMap.Entry

を使用する必要があります。

import java.util.Map; 
import java.util.HashMap; 
import java.util.Iterator; 

public class MapExample { 
    public static void main(String[] args) { 
     Map<String, Integer> m = new HashMap<String, Integer>(); 
     m.put("One", 1); 
     m.put("Two", 2); 
     m.put("Three", 3); 

     // Using a for-each 
     for (Map.Entry<String, Integer> e: m.entrySet()) { 
      System.out.println(e.getKey() + " => " + e.getValue()); 
     } 

     // Using an iterator 
     Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator(); 
     while (it.hasNext()) { 
      Map.Entry e = (Map.Entry<String, Integer>)it.next(); 
      System.out.println(e.getKey() + " => " + e.getValue()); 
     } 
    } 
} 
+0

イテレータの一般的なバージョンは何ですか? また、 パッケージマップが存在しません Map.Entry pairs =(Map.Entry)it.next(); – Travis

+0

@Travis私は答えに両方のアプローチを示すコードを追加しました。 HTH。 –