0

我正在尝试访问我放入哈希图中的内容,但它不起作用。显然 hashmap 的迭代器没有任何东西。它不能做一个mapIter.hasNext(),它会是假的。

这是代码:

    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 回答