Java 如何检查地图中的内容?
我对Java中的映射有问题。 代码如下所示:Java 如何检查地图中的内容?,java,Java,我对Java中的映射有问题。 代码如下所示: Map<Object, Object> test = myClass.getMap(); int value = (int) test.get(myID); 现在我在问自己如何调试它,并找到你为什么它不工作?我很确定所有的键和值都在这张地图上 如何打印出整个地图,以便我可以搜索是否有钥匙?这是一张很长的地图 或者,找到问题的正确方法是什么?您可以使用map.containsKeykey来检查密钥是否存在 之所以使用NPE,是因为映射中m
Map<Object, Object> test = myClass.getMap();
int value = (int) test.get(myID);
现在我在问自己如何调试它,并找到你为什么它不工作?我很确定所有的键和值都在这张地图上
如何打印出整个地图,以便我可以搜索是否有钥匙?这是一张很长的地图
或者,找到问题的正确方法是什么?您可以使用map.containsKeykey来检查密钥是否存在
之所以使用NPE,是因为映射中myId的值为null,并且您正试图将其转换为无法保存非null值的基元int。将其更改为下面的语句将避免异常,除非映射测试本身为null
使用带有集成调试器的IDE:在映射实例化和初始化后的某处放置断点,有效地查看映射中的内容。这里有多个问题: 映射测试可能为空。 不能从Object转换为int。需要将其转换为Integer。 我认为下面这一行不应该编译:
int value = (int) test.get(myID);
as get返回对象,您正试图将其转换为基元int。即使将其转换为整数:
上面的代码将抛出NPE,如果是getmyID;是空的。
您需要使用:
Integer value = (Integer) test.get(myID);
您可以使用test.containsKeymyID检查密钥。最后做如下操作:
if(test!=null && test.containsKey(myID))
Integer value = (Integer) test.get(myID);
但是,您应该在地图中使用。如果您想打印地图,请回答您的问题:
for (Entry<Object, Object> entry : test.entrySet()) {
System.out.println("Key:" + entry.getKey() + " Value:" + entry.getValue());
}
不过,containsKey方法可能正是您所需要的。您还可以发布堆栈跟踪吗?检查test是否为null。检查test.getmyID是否为null。首先,确保myClass.getMap!=我同意,最有可能的测试是空的。如果对象恰好是整数,那么转换为int将成功。
Integer value = (Integer) test.get(myID);
if(test!=null && test.containsKey(myID))
Integer value = (Integer) test.get(myID);
for (Entry<Object, Object> entry : test.entrySet()) {
System.out.println("Key:" + entry.getKey() + " Value:" + entry.getValue());
}