这个问题在这里已有答案:
我怎样才能从String
获得一系列类别List<Book>
s,只有唯一值?
我尝试了流,但我想念一些东西。
class Book {
int id;
String[] categories;
// getters and setters
}
List<Book> books = Arrays.asList(
new Book(1,{"Java" , "Computers"}),
new Book(1,{"Python" , "C++" }),
new Book(1,{"Java" , "IT"})
);
books.stream().map(VolumeInfo::getCategories).toArray(String[]::new);
您可以通过调用distinct()
来获取唯一值。然而,由于getCategories
返回String[]
,你需要flatMap
得到一个String[]
结果:
String[] arr = books.stream()
.map(Book::getCategories)
.flatMap(Arrays::stream)
.distinct()
.toArray(String[]::new);
哪个会产生Array
:
[Java, Computers, Python, C++, IT]