我有两个属性实例,它们包含相同的键,但可能包含不同的值(字符串)。检查两个实例中的值是否相同的最佳方法是什么。
现在我正在使用条件来检查如下
if(!p1.getProperty("x").equals(p2.getProperty("x")) {
return true;
}
答案 0 :(得分:3)
HashTable
是equals
的子类,它会覆盖equals
。您可以使用properties1.equals(properties2)
简单地比较实例:
properties.keySet()
但这不会告诉你 与众不同。
为此,您可以使用for (String key : properties1.keySet()) {
String value1 = properties1.get(key);
String value2 = properties2.get(key);
// Compare, e.g. value1.equals(value2).
// But may need to take into account missing values.
}
获取密钥,然后比较两个实例之间的值:
properties1
请注意,这是不对称的,因为它会查找Set<String> keys = new HashSet<>(properties1.keySet());
// For intersection:
keys.retainAll(properties2.keySet());
// For union:
// keys.addAll(properties2.keySet());
for (String key : keys) { ... }
中存在值的值。如果要搜索键的交集(或联合),只需先构建该组:
{{1}}
答案 1 :(得分:0)
String value=p1.getProperty("x");
if (value == null) {
if (!(p2.getProperty("x")==null && p2.containsKey("x")))
return true;
} else {
if (!value.equals(p2.getProperty("x")))
return true;
}