如何将以下内容转换为循环代码(请注意,crowdClient是对第三方服务的服务调用):
private List<User> getFullUserDetails(CrowdClient crowdClient, List<User> unModifiableUserList) {
List<User> userList = new ArrayList<User>();
for (User u : unModifiableUserList) {
userList.add(crowdClient.getUserWithAttributes(u.getName()));
}
return userList;
}
使用Java 8功能(如流)来编写更简单优雅的代码。 我期待下面的东西(顺便说一句,这不起作用):
private List<User> getUserDetails(CrowdClient crowdClient,
List<User> unModifiableUserList) {
return unModifiableUserList.stream()
.filter(unModifiableUserList -> crowdClient.getUserWithAttributes(unModifiableUserList.getName()))
.collect(Collectors.toList());
}
答案 0 :(得分:2)
该过滤器应该是地图......
unModifiableUserList.stream()
.map(u -> crowdClient.getUserWithAttributes(u.getName()))
.collect(Collectors.toList())
答案 1 :(得分:2)
您正在尝试使用filter
来过滤现有列表。另一方面,map
将帮助您将现有列表转换为所需的格式。
private List<User> getUserDetails(CrowdClient crowdClient, List<User> unModifiableUserList) {
return unModifiableUserList.stream()
.map(user -> crowdClient.getUserWithAttributes(user.getName()))
.collect(Collectors.toList());
}