hashmap keySet() 方法 returns 只有第一个元素

hashmap keySet() method returns only first element

我正在尝试通过以下代码遍历名为 products 的 HashMap :

public Product findProduct (int id)
{
    Product result = null;
    for (Product product : products.keySet())
    {
        if (product.getId() == id)
            result = product;
        break;
    }
    return result;
}

事情是在运行时,产品包含 2 个元素

但是 product:products.keySet() returns 只有第一个元素,我不知道为什么,结果如果我将 102 传递给该方法,它会抛出异常。

您是说 products.keySet() 仅根据您的循环所经历的迭代返回一个元素吗?

我看到您在 result=product; 语句之后放置了 break; 语句,这导致您的循环在第一次迭代时退出。如果这不是故意的,这可能就是罪魁祸首。

您可以尝试将 if 之后的语句放在这样的块中

if(product.getId()==id){
   result=product;
   break;      
}