for (int i = 0; i < singleRecord.size(); i++) { if (singleRecord.get(i).equals("") && map.get(nameList.get(i)) != null) { singleRecord.set(i, map.get(nameList.get(i)).toString()); } }用流的方式帮我写
时间: 2023-12-18 15:05:14 浏览: 74
用流 写入 读取等各种才做
假设 `singleRecord` 和 `nameList` 都是 `List<String>` 类型,`map` 是 `Map<String, Object>` 类型,可以使用 Java 8 中的 Stream API 简化上述代码:
```
singleRecord = IntStream.range(0, singleRecord.size())
.mapToObj(i -> singleRecord.get(i).equals("") && map.get(nameList.get(i)) != null
? map.get(nameList.get(i)).toString()
: singleRecord.get(i))
.collect(Collectors.toList());
```
上述代码使用 `IntStream.range` 生成一个整数流,表示索引的范围,然后使用 `mapToObj` 将每个索引映射为对应的值。在映射过程中,使用三目运算符判断当前位置是否为空字符串并且是否在 `map` 中有对应的值,如果满足条件则使用 `map` 中的值替换当前值;否则保持原有值。最后使用 `Collectors.toList` 将映射结果收集为一个新的 `List`。
阅读全文