for (HashMap m : list) { boolean flag = false;//默认没有被引用 String bpId = (String) m.get("bpId"), ypId = (String) m.get("ypId"), xhId = (String) m.get("xhId"), hjsId = (String) m.get("hjsId"); if (bpId != null || ypId != null || xhId != null || hjsId != null) { flag = true; } map.put(m.get("id"), flag); }优化一下且若值为空也进判断
时间: 2024-01-21 08:01:58 浏览: 284
如果要判断 `bpId`、`ypId`、`xhId`、`hjsId` 是否存在且不为空,可以使用以下代码:
```java
String[] properties = {"bpId", "ypId", "xhId", "hjsId"};
for (HashMap<String, Object> m : list) {
boolean flag = false;
for (String property : properties) {
if (m.containsKey(property) && m.get(property) != null && !m.get(property).toString().isEmpty()) {
flag = true;
break;
}
}
map.put(m.get("id"), flag);
}
```
这段代码和上面的代码类似,只不过在判断属性值是否为空时,加入了 `m.get(property).toString().isEmpty()` 的判断。这是因为在使用 `containsKey()` 和 `get()` 方法获取属性值时,返回的是一个 `Object` 对象,需要先将其转换成字符串类型,然后再判断该字符串是否为空。如果不加入这个判断,可能会出现 `NullPointerException` 异常。
因此,上述代码会判断 `bpId`、`ypId`、`xhId`、`hjsId` 是否存在且不为空,并且会将值为 `null` 或空字符串的情况都考虑进去。如果存在任意一个属性的值不为 `null` 或空字符串,则将 `flag` 标志设置为 `true`,并跳出循环。最后,将当前对象的 `id` 作为 key,`flag` 标志作为 value,存入 `map` 中。
阅读全文