如何将条件检查从c#转换为Java?



我正在尝试将这行代码从c#转换为Java,我很难理解它。

isEqual = !dbCertDict.Keys.Any(x => !String.Equals(dbCertDict[x], requestCertDict.ContainsKey(x) ? requestCertDict[x] : "", StringComparison.OrdinalIgnoreCase));

原来dbCertDict的类型是Dictionary<string, string>,现在它的类型是HashMap<String, String>。本质上,我想在Java中编写一个函数,如果dbCertDict和requestCertDict中的所有项目都匹配,则将isEqual设置为true。如果有任何不匹配,我希望它返回false

至少,这是我认为这行c#代码正在做的…任何帮助都是感激的!

我试图寻找Any()的等效函数,但我能找到的最接近的是用dbCertDict.keySet().contains()代替dbCertDict.Keys.Any,但不幸的是它们不一样…

isEqual = !dbCertDict.Keys.Any(x => 
!String.Equals(dbCertDict[x], requestCertDict.ContainsKey(x) ?
requestCertDict[x] : "", StringComparison.OrdinalIgnoreCase));
boolean isEqual = !dbCertDict.keySet().stream().anyMatch(x ->
dbCertDict.get(x).equalsIgnoreCase(requestCertDict.containsKey(x) ?
requestCertDict.get(x) : ""));

之类的

后者可以收紧到

boolean isEqual = dbCertDict.entrySet().stream().noneMatch(x -> 
x.getValue().equalsIgnoreCase(requestCertDict.getOrDefault(x.getKey(), "");

最新更新