我正在尝试访问我在hashmap中放入的内容,但它无效。 显然,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");
答案 0 :(得分: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");