我有一个ObservableMap,我希望从中获取所有以“CPU”键开头的值:
ObservableMap<Object, Object> properties
我试过这段代码:
ObservableMap<Object, Object> properties = children.getProperties();
for (int i = 0; i < properties.size(); i++)
{
if (properties.equals("CPU"))
{
children.setVisible(true);
}
else
{
children.setVisible(false);
}
}
但代码运行不正常。你能帮我解决一下代码吗?
答案 0 :(得分:3)
如果您知道Map中的键是字符串,那么要么将Map声明为ObservableMap<String, Object>
,要么在调用equals之前将每个键转换为String。
ObservableMap<Object, Object> properties = children.getProperties();
for (Entry<Object, Object> entry : properties.entrySet()) {
String key = (String) entry.getKey();
if (key.equals("CPU")) {
children.setVisible(true);
} else {
children.setVisible(false);
}
}
答案 1 :(得分:0)
您正在比较ObservableMap<Object, Object>
是否等于字符串"CPU"
。
接下来,如果继续比较地图中的关键对象(顺便说一下,类型为Object
),equals
方法将检查您要比较的对象是否是内存中的同一对象。
我可以猜测密钥可以转换为String
,因此在将它们与"CPU"
进行比较之前,将它们转换为字符串,以便您使用覆盖equals
方法