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 09:01:58 浏览: 63
可以优化这段代码的一个地方就是,使用一个数组来存储需要判断的属性名,避免在 `if` 语句中写出多个或运算符 `||`。另外,可以使用增强型 `for` 循环来遍历 `list` 集合中的每一个 `HashMap` 对象。
优化后的代码如下:
```java
String[] properties = {"bpId", "ypId", "xhId", "hjsId"};
for (HashMap<String, Object> m : list) {
boolean flag = false;
for (String property : properties) {
if (m.get(property) != null) {
flag = true;
break;
}
}
map.put(m.get("id"), flag);
}
```
这段代码中,首先定义了一个字符串数组 `properties`,存储需要判断的属性名。然后,使用增强型 `for` 循环遍历 `list` 集合中的每一个 `HashMap` 对象,对于每一个对象,在循环中遍历 `properties` 数组,判断该对象中是否存在任意一个属性的值不为 `null`。如果存在,则将 `flag` 标志设置为 `true`,并跳出循环。最后,将当前对象的 `id` 作为 key,`flag` 标志作为 value,存入 `map` 中。
相关问题
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); }优化一下
可以尝试将 if 判断改为如下形式:
```java
if (m.containsKey("bpId") || m.containsKey("ypId") || m.containsKey("xhId") || m.containsKey("hjsId")) {
flag = true;
}
```
另外,在遍历 list 时,最好指定泛型类型,避免出现 unchecked 警告。完整代码如下:
```java
for (HashMap<String, Object> m : list) {
boolean flag = false; // 默认没有被引用
if (m.containsKey("bpId") || m.containsKey("ypId") || m.containsKey("xhId") || m.containsKey("hjsId")) {
flag = true;
}
map.put(m.get("id"), flag);
}
```
阅读全文