【问题标题】:How To Filter An Array List By One Constructor Property?如何通过一个构造函数属性过滤数组列表?
【发布时间】:2020-09-03 16:32:50
【问题描述】:

我有一个数组列表,其中所有条目如下所示:

ListOfBooks.add(new Book("Holes", "Louis Sachar", 440419468, "Fiction", 1998, 5, 4));

但我只知道如何过滤掉包含字符串的数组列表。我正在为条目使用构造函数:

public Book(String a, String b, int c, String d, int e, int f, int g) {
    this.title = a;
    this.author = b;
    this.isbn = c;
    this.genre = d;
    this.year = e;
    this.rating = f;
    this.copies = g;
}

我的问题是,如何仅根据书名过滤书籍列表?

【问题讨论】:

  • 你有没有尝试过?
  • 看一下Stream接口中的filter方法。另外,看看Collectors.groupingBy
  • 我已经尝试了来自this页面的东西。

标签: java filter constructor


【解决方案1】:

Java 的Stream interface 及其filter 方法允许我们根据其字段title 过滤Book 对象(或更一般地说,任何基于其字段的Object)。假设您想以List<String> 的形式获取所有书籍,但只获取标题以“Baking Cookies”开头的书籍。下面的代码就是这样做的:

List<Book> titles = ListOfBooks.stream()
    .filter(book -> book.title.startsWith("Baking Cookies"))
    .collect(Collectors.toList());

【讨论】:

  • 这非常有用,但是有没有办法将所有属性(作者、年份、评级等)移动到这个列表中?或者这就是它的作用而我只是愚蠢?不管怎样,谢谢!
  • 你可以添加一个例子来解释你想要什么。
  • @TongChen 忽略我说的话,我只是个笨蛋。 Ari 提供了我所需要的。
  • 你可能是新手。不要对自己感到难过。只需尝试探索互联网并自己尝试一些事情。它会更快,你会学到更多的东西。
猜你喜欢
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
相关资源
最近更新 更多