java - 以最有效和可读的方式进行条件初始化
问题描述
有条件地初始化 Collection(在本例中为 Map)的最有效方法是什么?就最佳实践而言,您更喜欢一种解决方案吗?
我提供了三个解决方案,我想请教您的反馈或意见。
第一的:
Map<String, User> userMap;
if (isNotEmpty(userIdList)) {
userService
.getUsers(userIdList)
.stream()
.collect(Collectors.toMap(UserDto::getUserName, Function.identity()));
} else {
userMap = new HashMap<>();
}
第二:
Map<String, User> userMap = new HashMap<>();
if (isNotEmpty(userIdList)) {
userService
.getUsers(userIdList)
.stream()
.collect(Collectors.toMap(UserDto::getUserName, Function.identity()));
}
第三:
Map<String, User> userMap = isNotEmpty(userIdList) ?
userService
.getUsers(userIdList)
.stream()
.collect(Collectors.toMap(UserDto::getUserName, Function.identity()))
: new HashMap<>();
这里的额外限制是您需要在使用userIdList
之前null
和empty()
之前进行验证userService.getUsers()
解决方案
我会完全放弃条件。如果您流式传输一个空列表并将其收集到地图中,您将得到一个空地图:
Map<String, User> userMap =
userService.getUsers(userIdList)
.stream()
.collect(Collectors.toMap(UserDto::getUserName, Function.identity()));
推荐阅读
- tensorflow.js - tfjs codelab“从二维数据进行预测”在 tf-vis.render.scatterplot 中使用 values 关键字
- reactjs - 提交密码后如何渲染组件?
- pdf - Ghostscript 将 PDF 2 转换回 PDF 版本 1.7
- java - feign.RetryableException 包装了哪些异常?
- react-native - React Native 中 InputField 问题的 onChangeText
- flutter - 如何为输入选择创建与输入文本相同样式的新颤振组件?
- redux - 函数中的道具不调用该函数
- r - 如何在 R boxplot 函数中更改 y 轴刻度
- javascript - Google Drive API - 未列出特定的共享驱动器
- python - 使用 pytest 如何让命令行参数与特定测试相关