0

我在 java 中使用 Map<Map, Boolean> ,当我尝试使用 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() 方法总是在这里失败?

4

1 回答 1

0

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

于 2021-10-21T18:45:20.297 回答