如何去除Map<String,Object> result2的空集合
时间: 2023-11-11 19:09:34 浏览: 33
可以使用Java 8的Stream API来去除Map<String, Object> result2中的空集合。具体实现可以参考以下代码:
```
result2.entrySet().stream()
.filter(e -> e.getValue() != null)
.filter(e -> {
Object value = e.getValue();
if (value instanceof Collection) {
return !((Collection<?>) value).isEmpty();
} else {
return true;
}
})
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
```
上述代码首先使用`entrySet()`方法获取Map中的所有键值对,然后使用Stream API对每个键值对进行过滤操作,保留值不为空的键值对,并且对于值为集合的键值对,只保留集合非空的情况。最后使用`collect()`方法将过滤后的键值对重新组装成一个新的Map返回。
相关问题
根据一个List<String>集合的元素查找List<Map<String, Object>>,当List<String>元素与List<Map<String, Object>>相等时,返回相同元素的value的List集合
可以使用循环遍历的方式来实现根据一个List<String>集合的元素查找List<Map<String, Object>>,当List<String>元素与List<Map<String, Object>>相等时,返回相同元素的value的List集合。具体实现步骤如下:
1. 首先定义一个空的List集合,用于存储查找到的结果。
2. 循环遍历List<Map<String, Object>>,对于每一个Map对象,获取其中的key和value。
3. 判断List<String>集合中是否包含当前的key,如果包含,则将对应的value添加到结果集合中。
4. 最后返回结果集合。
代码示例:
```
public List<Object> findListByKeys(List<String> keys, List<Map<String, Object>> dataList) {
List<Object> result = new ArrayList<>();
for (Map<String, Object> data : dataList) {
for (Map.Entry<String, Object> entry : data.entrySet()) {
if (keys.contains(entry.getKey())) {
result.add(entry.getValue());
}
}
}
return result;
}
```
List<Map<String, Object>> toBeInserted = new ArrayList<>(); // 获取当前接口查询结果 List<Map<String, Object>> result = jxMjKhTxService.selectJxMjkhTxData(constantProperties.getJsbh()); // 待插入的数据 // 待更新的数据 List<Map<String, Object>> toBeUpdated = new ArrayList<>(); // 待删除的数据 List<Map<String, Object>> toBeDeleted = new ArrayList<>(); if (lastResult.isEmpty()) { toBeInserted.addAll(result); } else { // 遍历上一次查 can not find local varialbl 如何修改
你需要先声明一个变量 `lastResult` 并将其赋值为上一次查询的结果,然后才能在代码中使用。可以像下面这样修改代码:
```
List<Map<String, Object>> toBeInserted = new ArrayList<>();
// 获取当前接口查询结果
List<Map<String, Object>> result = jxMjKhTxService.selectJxMjkhTxData(constantProperties.getJsbh());
// 上一次查询结果
List<Map<String, Object>> lastResult = ... // 这里需要根据实际情况来获取
// 待更新的数据
List<Map<String, Object>> toBeUpdated = new ArrayList<>();
// 待删除的数据
List<Map<String, Object>> toBeDeleted = new ArrayList<>();
if (lastResult.isEmpty()) {
toBeInserted.addAll(result);
} else {
// 遍历上一次查询结果,判断哪些数据需要插入、更新或删除
for (Map<String, Object> last : lastResult) {
String id = last.get("id").toString();
boolean exist = false;
for (Map<String, Object> cur : result) {
if (id.equals(cur.get("id").toString())) {
exist = true;
if (!last.equals(cur)) {
toBeUpdated.add(cur);
}
break;
}
}
if (!exist) {
toBeDeleted.add(last);
}
}
// 处理新增数据
for (Map<String, Object> cur : result) {
String id = cur.get("id").toString();
boolean exist = false;
for (Map<String, Object> last : lastResult) {
if (id.equals(last.get("id").toString())) {
exist = true;
break;
}
}
if (!exist) {
toBeInserted.add(cur);
}
}
}
// 插入待插入的数据
for (Map<String, Object> insert : toBeInserted) {
// TODO: 插入数据的操作
}
// 更新待更新的数据
for (Map<String, Object> update : toBeUpdated) {
// TODO: 更新数据的操作
}
// 删除待删除的数据
for (Map<String, Object> delete : toBeDeleted) {
// TODO: 删除数据的操作
}
```
请注意,这里只是一个示例代码,具体的实现需要根据实际情况进行调整。