gpt4 book ai didi

java - HashMap 包含 4 个元素,但在调试中仅显示 3 个

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:47 24 4
gpt4 key购买 nike

我用下面的代码定义了一个HashMap:

final Map<OrderItemEntity, OrderItemEntity> savedOrderItems = new HashMap<OrderItemEntity, OrderItemEntity>();
final ListIterator<DiscreteOrderItemEntity> li = ((BundleOrderItemEntity) oi).getDiscreteOrderItems().listIterator();

while (li.hasNext()) {
final DiscreteOrderItemEntity doi = li.next();
final DiscreteOrderItemEntity savedDoi = (DiscreteOrderItemEntity) orderItemService.saveOrderItem(doi);
savedOrderItems.put(doi, savedDoi);
li.remove();
}

((BundleOrderItemEntity) oi).getDiscreteOrderItems().addAll(doisToAdd);
final BundleOrderItemEntity savedBoi = (BundleOrderItemEntity) orderItemService.saveOrderItem(oi);
savedOrderItems.put(oi, savedBoi);

我将 4 个项目放入 HashMap。当我调试时,即使 size 是 4,它也只显示 3 个元素:

debugging session

这是它包含的元素的列表。

{DiscreteOrderItemEntity@1c29ef3c=DiscreteOrderItemEntity@41949d95, DiscreteOrderItemEntity@2288b93c=DiscreteOrderItemEntity@2288b93c, BundleOrderItemEntity@1b500292=BundleOrderItemEntity@d0f29ce5, DiscreteOrderItemEntity@9203174a=DiscreteOrderItemEntity@9203174a}

可能是什么问题?

最佳答案

HashMap 处理冲突

由于您的 HashMap 仅由 16 个桶组成,因此元素的哈希值必须减少到介于 015(例如 hash % 16)。所以两个元素可能在同一个桶中(同一个HashMapNode)。

您可以检查每个 HashMapNode 以找出哪个包含两个元素。

关于java - HashMap 包含 4 个元素,但在调试中仅显示 3 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31534261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com