有条件地初始化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之前,您需要验证nullempty()

最佳答案

我将完全删除该条件。如果您串流一个空列表并将其收集到地图,则会得到一个空地图:

Map<String, User> userMap =
    userService.getUsers(userIdList)
               .stream()
               .collect(Collectors.toMap(UserDto::getUserName, Function.identity()));

09-26 20:29