java - Java Map.containsKey() 方法的内部工作
问题描述
我在 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() 方法总是在这里失败?
解决方案
detailsMap
每次循环时,您都必须创建一个新的- 或复制现有的。现在,您正在修改已放入的地图。
推荐阅读
- python-3.x - 在一张图中绘制两条线,每条线都有自己的 y 值
- scala - 如何在同一台机器上设置不同的 Scala 版本?
- postgresql - PostgreSQL - 为数据库模式生成 CREATE 脚本:过程、触发器、序列
- angular - 如何访问 mat-table 的 TR 中的 MatTableDataSource 元素?
- ios - iOS:在 SwiftUI 列表中显示 IBeacon 信息给出错误“'NSObject' 类型的值没有成员”
- php - 根据购物车总 woocommerce 在结帐页面上显示 html
- node.js - 当客户端输入已使用的用户名时,为什么我不能向客户端发送特定的 mongoose.js 错误?
- javascript - 解析 JavaScript MySQL 响应
- javascript - TypeScript 类函数作为函数 VS 变量,具有更好的性能
- visual-studio-code - 如何按各个git提交的时间对vscode中的搜索结果进行排序?