Java 将实体结构映射到使用流的映射
我拥有以下实体:Java 将实体结构映射到使用流的映射,java,java-stream,collectors,Java,Java Stream,Collectors,我拥有以下实体: public class Library { String name; Set<Book> books; } public class Book { String isbn; String title; } 但是我刚刚得到了一张列表的地图 有什么想法吗?蒂亚 由于您从一个列表开始,因此可能需要将收集器.toMap()与两个映射函数结合使用: 键的库->字符串映射器(返回name) 值的库->映射器 对于第二个映射器,您可能希望将集的书籍流化,再次
public class Library {
String name;
Set<Book> books;
}
public class Book {
String isbn;
String title;
}
但是我刚刚得到了一张列表的地图
有什么想法吗?蒂亚 由于您从一个列表开始
,因此可能需要将收集器.toMap()
与两个映射函数结合使用:
键的库->字符串映射器(返回name
)
值的库->映射器
对于第二个映射器,您可能希望将集
的书籍流化,再次使用2个(不同)映射功能将它们收集到类似于“外部”映射的映射中:
一本书->键的字符串映射器(返回isbn
)
值的标识映射器(返回书本本身)
比如:
List<Library> libs;
// populate the libraries
Map<String,Map<String,Book>> map = libs.
stream().
collect(Collectors.toMap(l -> l.name, l -> {
return l.books.
stream().
collect(Collectors.toMap(b -> b.isbn, Function.identity()));
}));
列出libs;
//填充库
Map=libs。
流()。
collect(Collectors.toMap(l->l.name,l->{
归还我的书。
流()。
collect(Collectors.toMap(b->b.isbn,Function.identity());
}));
列出LIB 使用方法引用和静态导入:
import static java.util.stream.Collectors.toMap;
Map<String, Map<String, Book>> map = libs.stream().collect(
toMap(Library::getName,
l -> l.getBooks().stream().collect(
toMap(Book::getIsbn, b -> b))));
导入静态java.util.stream.Collectors.toMap;
Map Map=libs.stream().collect(
toMap(库::getName,
l->l.getBooks().stream().collect(
toMap(Book::getIsbn,b->b));
你从什么开始?单个库
实例?一个列表
?@Mureinik和一个列表
到目前为止你写了什么代码?你被困在哪里了?@Michael:我刚刚用一个代码示例更新了我的问题。谢谢!就这样!
List<Library> libs;
// populate the libraries
Map<String,Map<String,Book>> map = libs.
stream().
collect(Collectors.toMap(l -> l.name, l -> {
return l.books.
stream().
collect(Collectors.toMap(b -> b.isbn, Function.identity()));
}));
import static java.util.stream.Collectors.toMap;
Map<String, Map<String, Book>> map = libs.stream().collect(
toMap(Library::getName,
l -> l.getBooks().stream().collect(
toMap(Book::getIsbn, b -> b))));