【发布时间】:2018-10-29 09:16:11
【问题描述】:
有条件地初始化一个集合(在这个例子中是一个地图)最有效的方法是什么?就最佳实践而言,您更喜欢一种解决方案吗?
我提供了三个解决方案,想请教您的反馈或意见。
第一:
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<>();
这里的附加限制是您需要在使用userService.getUsers() 之前验证userIdList 是否为null 和empty()
【问题讨论】:
-
第一种方式和第三种方式基本相同。第二种方式效率稍低,但会破坏有效的确定性
-
userMap = userService...在制定问题时迷路了。我最喜欢第三种解决方案。
标签: java if-statement initialization java-stream ternary-operator