搜索字符串后返回子列表?

时间:2021-07-15 08:43:48

标签: java arraylist

我有这个方法 public ArrayList<Rentals> search(String t),它是管理电影租赁列表的类的一部分。根据作为显式参数传递的字符串,该方法必须返回标题中包含该字符串的所有电影。该方法进行搜索,但我不知道如何取回包含名称中包含该字符串的所有电影的子列表。

1 个答案:

答案 0 :(得分:1)

  1. “老式”解决方案
    这里创建了一个结果列表,使用 for-each 循环迭代输入列表,匹配电影标题以包含搜索词,如果匹配则添加到结果列表中。然后返回列表。
List<Rentals> mainList = new ArrayList<>(); // populated somewhere else

public List<Rentals> search(String title) {
    List<Rentals> subList = new ArrayList<>();

    for (Rentals rental : mainList) {
        if (rental.getTitle().contains(title)) { // the simplest search
            subList.add(rental);
        }
    }
    return subList;
}
  1. 使用流 API
    List<Rentals> 可以转换为 Stream<Rentals>,然后由条件过滤,结果以更简洁的方式收集到一个新列表中:
public List<Rentals> search(String title) {
    return mainList.stream()
                   .filter(rental -> rental.getTitle().contains(title))
                   .collect(Collectors.toList());
}