是否可以(以简单的方式)将其更改为java8
Stream
? (如果你想告诉我两个for
更好,不是所有的循环都应该改为流,请不要评论/回答,这不是重点)
final Map<String, String> map = new HashMap<>();
for(final Person person: list) {
for(final Internal internal: person.getInternals()) {
final String key = person.getName() + internal.getKey();
map.put(key, internal.getValue());
}
}
主要问题是我不能使用 flatMap
因为我会丢失以前的信息。 每个创建的 key
都是唯一的。
最佳答案
好吧,您可以通过Pair
传递它们(虽然我还没有编译这个,但想法应该在那里)
list.stream()
.flatMap(person -> person.getInternals()
.stream()
.map(internal ->
Pair.of(person.getName() + internal.getKey(), internal.getValue()))
.collect(Collectors.toMap(Pair::getLeft, Pair::getRight));
关于java - 从列表创建 map ,其中键是内部和外部对象的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46561693/