我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);
Run Code Online (Sandbox Code Playgroud)
我把4件物品放入HashMap.当我调试时,即使size它是4,它只显示3个元素:

这是它包含的元素列表.
{DiscreteOrderItemEntity@1c29ef3c=DiscreteOrderItemEntity@41949d95, DiscreteOrderItemEntity@2288b93c=DiscreteOrderItemEntity@2288b93c, BundleOrderItemEntity@1b500292=BundleOrderItemEntity@d0f29ce5, DiscreteOrderItemEntity@9203174a=DiscreteOrderItemEntity@9203174a}
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
enr*_*cis 14
Hashmaps处理冲突.
由于您HashMap只由16个桶组成,因此元素的散列必须减少到跨越0到15之间的数字(例如hash % 16).所以两个元素可能在同一个桶中(相同HashMapNode).
您可以检查每个HashMapNode以找出哪个包含两个元素.
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |