【问题标题】:Internal working of Java Map.containsKey() method [duplicate]Java Map.containsKey() 方法的内部工作 [重复]
【发布时间】:2021-10-21 18:41:34
【问题描述】:

我在 java 中使用 Map,当我尝试使用 containsKey() 方法验证 Map 时,它总是返回 false,内部 Map 总是更新其键和值。这是与此类似的代码

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class ExampleMap
{
    private static Map<Map<Long,Boolean>, Boolean> objectDetailsToSize= new HashMap<>();
    public static void main(String[] args) 
    {
        Random rn = new Random();
        int size = 10;
        Map<Long,Boolean> detailsMap = new HashMap<>();
        for(int i=0; i< size; i++)
        {
            detailsMap.put(rn.nextLong(),rn.nextBoolean());
            if(!objectDetailsToSize.containsKey(detailsMap))
            {
                    objectDetailsToSize.put(detailsMap, rn.nextBoolean());
                    System.out.println("Why containsKey() method is failing here");
            }
        }
        
    }
}

为什么 Map 的 containsKey() 方法总是在这里失败?

【问题讨论】:

    标签: java hashmap containskey object-comparison


    【解决方案1】:

    您必须创建一个新的detailsMap -- 或复制您现有的 -- 每次循环。现在,您正在修改已放入的地图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-27
      • 2022-12-07
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      相关资源
      最近更新 更多