如何从对象列表中获取字符串属性数组[重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

我怎样才能从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);

java arrays list
1个回答
2
投票

您可以通过调用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]
© www.soinside.com 2019 - 2024. All rights reserved.