0

ハッシュマップに入れたものにアクセスしようとしていますが、うまくいきません。どうやら hashmap のイテレータには何もありません。mapIter.hasNext() を実行できず、false になります。

コードは次のとおりです。

    Iterator<Product> cIter = getCartContent(cart).iterator();
    HashMap<Product, Integer> hash = new HashMap<Product, Integer>();
    Iterator<Product> mIter = hash.keySet().iterator();

    Product p;

    while(cIter.hasNext()) {
        p = cIter.next();

        if(hash.containsKey(p))
            hash.put(p, hash.get(p) + 1);
        else
            hash.put(p, 1);

    }

    if(!mIter.hasNext())
        System.out.println("Empty mIter");
4

1 に答える 1

1

電話すると

HashMap<Product, Integer> hashmap = new HashMap<Product, Integer>();
Iterator<Product> mapIter = hashmap.keySet().iterator();

作成されたには、まだ何も追加していないためIterator、空の のビューがあります。HashMapを呼び出すとhasNext()HashMapそれ自体に要素が含まれていても、Iteratorのビューには表示されません。

作成するIterator前ではなく、絶対に必要なときに作成します。hasNext()コードを呼び出す直前。

Iterator<Product> mapIter = hashmap.keySet().iterator();

if(!mapIter.hasNext())
    System.out.println("Empty mapIter");
于 2013-10-16T04:15:55.320 に答える