gpt4 book ai didi

java - 从 Java 8 中的多级映射构造列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:53 25 4
gpt4 key购买 nike

我有一个多级 map 如下:

 Map<String, Map<String, Student> outerMap = 
{"cls1" : {"xyz" : Student(rollNumber=1, name="test1")},
"cls2" : {"abc" : Student(rollNumber=2, name="test2")}}

现在我想从上面的映射构造一个字符串列表,如下所示:

["In class cls1 xyz with roll number 1",
"In class cls2 abc with roll number 2"]

我写了如下,但这不起作用,在这种情况下我也浏览了帖子:Java 8 Streams - Nested Maps to List ,但没有太多想法。

 List<String> classes = outerMap.keySet();
List<String> studentList = classes.stream()
.map(cls ->
outerMap.get(cls).keySet().stream()
.map(student -> "In class "+ cls +
student + " with roll number " +
outerMap.get(cls).get(student).getRollNum() +"\n"
).collect(Collectors.toList());

最佳答案

您可以简单地使用 Map.forEach 作为此操作:

List<String> messages = new ArrayList<>();
outerMap.forEach((cls, students) ->
students.forEach((name, student) ->
messages.add(convertToMessage(cls, name, student.getRollNumber()))));

其中 convertToMessage 是一个实用程序:

// this could be made cleaner using 'format'
String convertToMessage(String cls, String studentName, String rollNumber) {
return "In class" + cls + "--> " + studentName + " with roll number: " + rollNumber;
}

关于java - 从 Java 8 中的多级映射构造列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54229285/

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