gpt4 book ai didi

java-8 - 使用 Java 8 将复杂对象列表转换为 Map

转载 作者:行者123 更新时间:2023-12-02 08:05:16 24 4
gpt4 key购买 nike

我有一系列主题

List<String> subjects = Arrays.asList(“physics”, “maths”);

我想为每个主题创建一个虚拟用户列表,并将它们添加到 map 中,键为主题,值为列表

有点像

Map<String,List<User>> userMap = new HashMap<>();
for(String subject: subjects){
List<User> users = new ArrayList<User>();
for(int i=0;i<10;i++){
User user = new User(“first name”+i+subject,”last name”+i+subject);
users.add(user);
}
userMap.put(subject,users);
}

我想在 Java 8 上尝试这个。刚刚尝试了下面的一些东西,但看起来不是正确的方法。

subjects.stream().map((subjectName)->{
List<User> userList = new ArrayList<User>();
for(int i=0;i<10;i++){
User user = new User(“first name”+i+subject,”last name”+i+subject);
userList.add(user);
}
})

最佳答案

subjects.stream()
.map(subjectName -> {
List<User> users = .... create the users;
return new SimpleEntry<>(subjectName, users);
})
.collect(Collectors.toMap(Entry::getKey, Entry::getValue))

如果您真的想用 java-8 和流来实现,这将是一种方式。一项改进是采用一种方法,该方法采用 String subjectName 并创建该 Entry 例如:

private static Entry<String, List<User>> createEntry(String subjectName) {
List<User> users = .... create the user;
return new SimpleEntry<>(subjectName, users);
}

并将其用于:

subjects.stream()
.map(YourClass::createEntry)
.collect(Collectors.toMap(Entry::getKey, Entry::getValue))

请注意,您的循环最干净的方式来做到这一点IMO

关于java-8 - 使用 Java 8 将复杂对象列表转换为 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52258629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com