比较两个Properties对象中的值的最佳方法是什么?

时间:2017-06-22 09:54:48

标签: java

我有两个属性实例,它们包含相同的键,但可能包含不同的值(字符串)。检查两个实例中的值是否相同的最佳方法是什么。

现在我正在使用条件来检查如下

if(!p1.getProperty("x").equals(p2.getProperty("x")) {
    return true;
}

2 个答案:

答案 0 :(得分:3)

HashTableequals的子类,它会覆盖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;
}