Java>计数Null/NA,0,空值

Java>计数Null/NA,0,空值,java,json,hashmap,Java,Json,Hashmap,我在看2个JSON对象。结构是这样的 { "a": {}, "b": [], "c": {}, "d": { "eStuff": {}, "fStuff": [], "gStuff": [], "hStuff": {} }, "i": [], "j": {}, "k": {} } 然后我获取d的JSON对象。然后我把这张图转换成地图来比较两者的不同之处,相同之处和独特之处。但是,我需要查看eStfuff、fStuff、gStuff、hStuff中的

我在看2个JSON对象。结构是这样的

{
 "a": {},
 "b": [],
 "c": {},
 "d": {
   "eStuff": {},
   "fStuff": [],
   "gStuff": [],
   "hStuff": {}
 },
  "i": [],
  "j": {},
  "k": {}
}
然后我获取d的JSON对象。然后我把这张图转换成地图来比较两者的不同之处,相同之处和独特之处。但是,我需要查看eStfuff、fStuff、gStuff、hStuff中的值,并找到它们的计数。它们具有嵌套的JSON数据

# of NA/Null Values
# of 0 Values
# of Blank Values
我可以用下面的公式得到空计数。但是,在获取0和空白值时遇到问题

Map <String, Object> leftFlatMap = FlatMapUtil.flatten(ballPositionalDataLegacyMap);
int nullCount = Comparision.countFrequencies (leftFlatMap, null);
int zeroCount = Comparision.countFrequencies (leftFlatMap, 0);

 public static int countFrequencies(Map <String, Object> list, Object searchValue) {

  int totalCount = 0;
  Collection <Object> values = list.values();
  for (Object v : values) {
     if  (v == searchValue){
     totalCount = totalCount + 1;
   }
  }
  return totalCount;
 }
}
如果你这样做呢

   if  (v != null && v.equals(searchValue)){
     totalCount = totalCount + 1;
   }

<>这应该解决你的空值和值情况,真的不知道如何测试空白的。请用这个代码试一下

    private static int countFrequencies(Map<String, Object> list, Object o) {
    int totalCount = 0;
    Collection<Object> values = list.values();
    for (Object v : values) {
        if (o == null) {
            if (v == null) totalCount++;
        } else {
            if (Objects.nonNull(v) && v.equals(o)) {
                totalCount++;
            }
        }
    }
    return totalCount;
}

你能更详细地解释一下你想要达到的目标吗?更具体地说:请添加示例JSON对象和所需的输出。我添加了基本JSON结构@JavaManI尝试了这一点,我得到了一个java.lang.NullPointerException错误。在调用equals方法之前,您可以检查以确保v和searchValue都不是null,answer Edit。我没有得到错误。但是,当我运行.equals时,没有返回null或0的结果,而只是==谢谢。这让我得到了空值和值0,0.0。让我进入空白处。