Java>计数Null/NA,0,空值
我在看2个JSON对象。结构是这样的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中的
{
"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。让我进入空白处。