有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从对象列表中获取字符串属性数组

如何从只有唯一值的List<Book>中获取类别String数组

我试着用stream,但我错过了一些东西

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);


共 (1) 个答案

  1. # 1 楼答案

    您可以调用^{}以仅获取唯一值。但是,由于getCategories返回一个String[],因此需要flatMap来获得一个String[]结果:

    String[] arr = books.stream()
                        .map(Book::getCategories)
                        .flatMap(Arrays::stream)
                        .distinct()
                        .toArray(String[]::new);
    

    这将产生Array

    [Java, Computers, Python, C++, IT]