List<Long> preIds = records.stream().map(NoticeFullViewDto::getPreNo).filter(Objects::nonNull).collect(Collectors.toList()); records中只有一条数据且 preno为null,过滤掉PreNo为null的后,为什么返回的list preIds是null
时间: 2024-04-12 21:34:29 浏览: 114
根据您提供的信息,如果 `records` 中只有一条数据且 `PreNo` 为 `null`,那么根据您的代码逻辑,返回的 `preIds` 应该是一个空的 `List` 对象,而不是 `null`。
可能导致返回 `null` 的原因有以下几种情况:
1. 在代码中对 `preIds` 进行了赋值操作,将其赋值为 `null`。
请检查是否在代码中对 `preIds` 进行了其他操作,可能导致其被赋值为 `null`。
2. 在代码中对 `records` 进行了修改,导致其为 `null`。
请检查是否在获取 `preIds` 之前对 `records` 进行了修改,并且将其赋值为 `null`。
3. 在代码中使用了其他操作或条件判断,导致最终返回的结果为 `null`。
请检查代码中是否存在其他与 `preIds` 相关的操作,可能会影响到最终的结果。
请仔细检查以上情况,并确保在获取 `preIds` 前没有对其进行赋值为 `null` 的操作。如果问题仍然存在,请提供更多相关的代码和上下文信息,以便我能够更好地帮助您。
相关问题
List<Long> preIds = records.stream().map(NoticeFullViewDto::getPreNo).filter(Objects::nonNull).collect(Collectors.toList()); 过滤掉PreNo为null的后,为什么返回的list preIds是null
根据您提供的代码,将会返回一个 `preIds` 的 `List` 对象,该对象包含了所有 `records` 中的非空 `PreNo` 值。如果 `preIds` 为 `null`,可能有以下几种情况:
1. 如果 `records` 本身为 `null`,那么在调用 `stream()` 方法时会抛出 `NullPointerException` 异常,导致整个表达式返回 `null`。
2. 如果 `records` 不为 `null`,但其中没有任何元素,那么 `stream()` 方法返回的流将为空流,因此在调用 `collect()` 方法时会返回一个空的 `List` 对象,即 `preIds` 为一个空列表对象,而不是 `null`。
3. 如果 `records` 中所有元素的 `PreNo` 值都是 `null`,那么 `filter()` 方法将过滤掉所有元素,导致最终的结果是一个空的 `List` 对象。
请检查一下以上情况是否符合您的实际情况,并确保代码中没有其他因素导致 `preIds` 为 `null`。如果问题还未解决,请提供更多相关的代码和上下文信息,以便我能够更好地帮助您。
List<DataPermissionSchemaEo> dataPermissionSchemaEoList = comDataComponent.getDataPermissionSchemaList(); List<SchemaRowRuleEo> schemaRowRuleList = comDataComponent.getSchemaRowRuleList(); List<SchemaColumnRuleEo> schemaColumnRuleList = comDataComponent.getSchemaColumnRuleList(); //设置行权限 根据用户id和用户组织去获取 List<SchemaRowRule> userRowRuleList = schemaRowRuleList.stream() .filter(schemaRowRuleEo -> { List<String> userList = JSONObject.parseArray(schemaRowRuleEo.getRowPermissionUserList(), String.class); List<String> orgList = JSONObject.parseArray(schemaRowRuleEo.getRowPermissionOrgList(), String.class); return userList.contains(userUid) || orgList.contains(orgCode) || userList.contains(WILDCARD) || orgList.contains(WILDCARD); }) .map(schemaRowRuleEo -> { SchemaRowRule schemaRowRule = new SchemaRowRule(); BeanUtils.copyProperties(schemaRowRuleEo, schemaRowRule); return schemaRowRule; }) .collect(Collectors.toList());List<SchemaColumnRule> userColumnRuleList = schemaColumnRuleList.stream() .filter(rule -> { List<String> userList = Optional.ofNullable(rule.getColumnPermissionUserList()) .map(userListStr -> JSONObject.parseArray(userListStr, String.class)) .orElse(Collections.emptyList()); List<String> orgList = Optional.ofNullable(rule.getColumnPermissionOrgList()) .map(orgListStr -> JSONObject.parseArray(orgListStr, String.class)) .orElse(Collections.emptyList()); return userList.contains(userUid) || orgList.contains(orgCode) || userList.contains(WILDCARD) || orgList.contains(WILDCARD); }) .map(rule -> { SchemaColumnRule columnRule = new SchemaColumnRule(); BeanUtils.copyProperties(rule, columnRule); return columnRule; }) .collect(Collectors.toList()); List<DataPermissionSchema> dataPermissionSchemaList = dataPermissionSchemaEoList.stream().map(dataPermissionSchemaEo -> { List<SchemaRowRule> schemaRowRules = userRowRuleList.stream() .filter(schemaRule -> dataPermissionSchemaEo.getDatabaseCode().equals(schemaRule.getDatabaseCode()) && dataPermissionSchemaEo.getSchemaCode().equals(schemaRule.getSchemaCode())) .collect(Collectors.toList()); List<SchemaColumnRule> schemaColumnRules = userColumnRuleList.stream() .filter(schemaRule -> dataPermissionSchemaEo.getDatabaseCode().equals(schemaRule.getDatabaseCode()) && dataPermissionSchemaEo.getSchemaCode().equals(schemaRule.getSchemaCode())) .collect(Collectors.toList()); if(!schemaRowRules.isEmpty() || !schemaColumnRules.isEmpty()) { DataPermissionSchema dataPermissionSchema = new DataPermissionSchema(); dataPermissionSchema.setDatabaseCode(dataPermissionSchemaEo.getDatabaseCode()); dataPermissionSchema.setSchemaCode(dataPermissionSchemaEo.getSchemaCode()); dataPermissionSchema.setSchemaRowRuleList(schemaRowRules); dataPermissionSchema.setSchemaColumnRuleList(schemaColumnRules); return dataPermissionSchema; } return null; }).filter(Objects::nonNull).collect(Collectors.toList());把这段代码改造成每个用户拥有的行权限和列权限
可以将该代码封装成一个方法,接收用户ID和组织代码作为参数,返回该用户拥有的行权限和列权限,代码如下:
```
public List<DataPermissionSchema> getUserDataPermissionSchema(String userUid, String orgCode) {
List<DataPermissionSchemaEo> dataPermissionSchemaEoList = comDataComponent.getDataPermissionSchemaList();
List<SchemaRowRuleEo> schemaRowRuleList = comDataComponent.getSchemaRowRuleList();
List<SchemaColumnRuleEo> schemaColumnRuleList = comDataComponent.getSchemaColumnRuleList();
// 获取用户行权限
List<SchemaRowRule> userRowRuleList = schemaRowRuleList.stream()
.filter(schemaRowRuleEo -> {
List<String> userList = JSONObject.parseArray(schemaRowRuleEo.getRowPermissionUserList(), String.class);
List<String> orgList = JSONObject.parseArray(schemaRowRuleEo.getRowPermissionOrgList(), String.class);
return userList.contains(userUid) || orgList.contains(orgCode) || userList.contains(WILDCARD) || orgList.contains(WILDCARD);
})
.map(schemaRowRuleEo -> {
SchemaRowRule schemaRowRule = new SchemaRowRule();
BeanUtils.copyProperties(schemaRowRuleEo, schemaRowRule);
return schemaRowRule;
})
.collect(Collectors.toList());
// 获取用户列权限
List<SchemaColumnRule> userColumnRuleList = schemaColumnRuleList.stream()
.filter(rule -> {
List<String> userList = Optional.ofNullable(rule.getColumnPermissionUserList())
.map(userListStr -> JSONObject.parseArray(userListStr, String.class))
.orElse(Collections.emptyList());
List<String> orgList = Optional.ofNullable(rule.getColumnPermissionOrgList())
.map(orgListStr -> JSONObject.parseArray(orgListStr, String.class))
.orElse(Collections.emptyList());
return userList.contains(userUid) || orgList.contains(orgCode) || userList.contains(WILDCARD) || orgList.contains(WILDCARD);
})
.map(rule -> {
SchemaColumnRule columnRule = new SchemaColumnRule();
BeanUtils.copyProperties(rule, columnRule);
return columnRule;
})
.collect(Collectors.toList());
// 获取用户权限所在的数据权限模板
List<DataPermissionSchema> dataPermissionSchemaList = dataPermissionSchemaEoList.stream().map(dataPermissionSchemaEo -> {
List<SchemaRowRule> schemaRowRules = userRowRuleList.stream()
.filter(schemaRule -> dataPermissionSchemaEo.getDatabaseCode().equals(schemaRule.getDatabaseCode())
&& dataPermissionSchemaEo.getSchemaCode().equals(schemaRule.getSchemaCode()))
.collect(Collectors.toList());
List<SchemaColumnRule> schemaColumnRules = userColumnRuleList.stream()
.filter(schemaRule -> dataPermissionSchemaEo.getDatabaseCode().equals(schemaRule.getDatabaseCode())
&& dataPermissionSchemaEo.getSchemaCode().equals(schemaRule.getSchemaCode()))
.collect(Collectors.toList());
if(!schemaRowRules.isEmpty() || !schemaColumnRules.isEmpty()) {
DataPermissionSchema dataPermissionSchema = new DataPermissionSchema();
dataPermissionSchema.setDatabaseCode(dataPermissionSchemaEo.getDatabaseCode());
dataPermissionSchema.setSchemaCode(dataPermissionSchemaEo.getSchemaCode());
dataPermissionSchema.setSchemaRowRuleList(schemaRowRules);
dataPermissionSchema.setSchemaColumnRuleList(schemaColumnRules);
return dataPermissionSchema;
}
return null;
}).filter(Objects::nonNull).collect(Collectors.toList());
return dataPermissionSchemaList;
}
```
阅读全文