我在这里填充了两个哈希图:

Properties properties = new Properties();
try {
    properties.load(openFileInput("xmlfilesnames.xml"));
} catch (IOException e) {
    e.printStackTrace();
}
for (String key : properties.stringPropertyNames()) {
    xmlFileMap.put(key, properties.get(key).toString());
}

try {
    properties.load(openFileInput("comparexml.xml"));
} catch (IOException e) {
    e.printStackTrace();
}
for (String key : properties.stringPropertyNames()) {
    compareMap.put(key, properties.get(key).toString());
}

宣言:
public Map<String,String> compareMap = new HashMap<>();
public Map<String, String> xmlFileMap = new HashMap<>();

他们看着像是:

java - 如何比较两个哈希图-LMLPHP

如何检查job_id是否更改为null?
有时job_id确实不存在。因此,它们中缺少job_id

有时在compareMap中,一个以上的job_id
比较时,如何只比较job_id并获得boolean值?

最佳答案

似乎您要根据特定模式查找映射键。这可以通过遍历所有键来完成:

private static String PREFIX = "<job_id>";
private static String SUFFIX = "</job_id>";

public static String extractJobId(Map<String, ?> map) {
    for(String key : map.keySet()) {
        if(key.startsWith(PREFIX) && key.endsWith(SUFFIX))
            return key.substring(PREFIX.length(), key.length()-SUFFIX.length());
    }
    // no job_id found
    return null;
}

如果您可能有几个job_id键,并且想要检查它们是否都相同,则可以构建一个中间集:
public static Set<String> extractJobIds(Map<String, ?> map) {
    Set<String> result = new HashSet<>();
    for(String key : map.keySet()) {
        if(key.startsWith(PREFIX) && key.endsWith(SUFFIX))
            result.add(key.substring(PREFIX.length(), key.length()-SUFFIX.length()));
    }
    return result;
}

现在,您可以使用此方法比较不同地图的job_id:
if(Objects.equals(extractJobIds(xmlFileMap), extractJobIds(compareMap))) {
    // ...
}

09-30 18:05
查看更多