亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何打印出這個流?

我如何打印出這個流?

慕斯709654 2022-01-12 14:07:22
library.stream()             .map(book -> book.getAuthor())             .filter(author -> author.getAge() >= 50)             .map(Author::getLastName)             .limit(10)             .collect(Collectors.toList());如何打印列表?我試過了System.out.println(Collectors.toList());但它給了我 java.util.stream.Collectors$CollectorImpl@4ec6a292
查看完整描述

3 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

您需要將此表達式分配給這樣的列表,


List<String> lastNameList = library.stream()

             .map(book -> book.getAuthor())

             .filter(author -> author.getAge() >= 50)

             .map(Author::getLastName)

             .limit(10)

             .collect(Collectors.toList());

然后使用打印,


System.out.println(lastNameList);

或者你可以像這樣直接打印,


System.out.println(library.stream()

             .map(book -> book.getAuthor())

             .filter(author -> author.getAge() >= 50)

             .map(Author::getLastName)

             .limit(10)

             .collect(Collectors.toList()));

你實際上正在這樣做,


System.out.println(Collectors.toList());

除了收集器類型的空對象外,沒有什么可打印的,這就是你看到這個的原因,


java.util.stream.Collectors$CollectorImpl@4ec6a292


查看完整回答
反對 回復 2022-01-12
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

使用foreach()方法在List


library.stream()

    .map(book -> book.getAuthor())

    .filter(author -> author.getAge() >= 50)

    .map(Author::getLastName)

    .limit(10)

    .forEach(System.out::println);

如果你想打印收集的列表,這里是一個例子


List<Integer> l = new ArrayList<>();

l.add(10);

l.add(20);

l.forEach(System.out::println);


查看完整回答
反對 回復 2022-01-12
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

您可以使用Stream.peek打印50歲以上lastName的authors列表,如下所示:age


List<Book> library = List.of(new Book(new Author("overflow", 100)), 

                             new Book(new Author("stack", 80)), 

                             new Book(new Author("nullpointer", 49)));


// you were ignoring the result of collect

List<String> lastNames = library.stream()

            .map(Book::getAuthor)

            .filter(author -> author.getAge() >= 50)

            .map(Author::getLastName)

            .limit(10)

            .peek(System.out::println) // this would print "overflow" and "stack"

            .collect(Collectors.toList());

另外,請注意,如果您的主要目的只是打印名稱而不是存儲它們,您可以簡單地使用forEach而不是collect,它們都是終端操作,只是 collect 具有基于 Stream 類型的返回類型,而 forEach 是void:-


library.stream()

       .map(Book::getAuthor)

       .filter(author -> author.getAge() >= 50)

       .map(Author::getLastName)

       .limit(10)

       .forEach(System.out::println);

以上所有,考慮到使用的對象類似于以下


class Book {

    Author author;


    Book(Author author) {

        this.author = author;

    }


    // ... getters

}


class Author {

    String lastName;

    int age;


    Author(String lastName, int age) {

        this.lastName = lastName;

        this.age = age;

    }


    // ... getters

}


查看完整回答
反對 回復 2022-01-12
  • 3 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號