当前位置: 首页 > 知识库问答 >
问题:

列表中的Java8 StreamFilter

谷梁昊空
2023-03-14

我有这样的东西:

   // common code without java8-closures/stream-api (this works):
    public static List<Person> getFilteredRes_OLD(List<Person>all, List<String> names){

    List<Person> pos = new ArrayList<>();

    for(Person e: all){
        for(String n: names){
            if(Person.isFemale(n).test(e)){
                pos.add(e);
            }
        }

    }

    return pos;
}

public static Predicate<Person> isFemale(String test) {
    return p -> p.getFirstName()!=null && p.getFirstName().equalsIgnoreCase(test);
}

现在,我想在Java8中使用新的流过滤器API:

   // JAVA 8 code (this works, but only for a specified filter-value):

    public static List<Person> getFilteredRes_NEW(List<Person>all, List<String> names){

    return all.stream()
    // how can I put the list 'names" into the filter-Method
    // I do not want to test only for 'Lisa' but for the wohle "names"-list
    .filter( Person.isFemale("Lisa") )
    .collect(Collectors.<Person>toList());

    return pos;
}

我对getFilteredRes_NEW()的问题是:

共有1个答案

云长恨
2023-03-14

我想这是您想要的过滤器指令:

.filter(person -> names.stream().anyMatch(
                      name -> Person.isFemale(name).test(person)))

对于每个人,它会测试person.IsFement(N).test(P)返回true的姓名列表中是否至少有一个姓名N。

如果您只需要一个方法,它就会简单得多,并且创建的谓词实例也会更少

public boolean isFemale(Person p, String name) {
    return p.getFirstName() != null && p.getFirstName().equalsIgnoreCase(test);
}
.filter(person -> names.stream().anyMatch(name -> isFemale(person, name)))
 类似资料:
  • rank ▲ ✰ vote url 45 441 233 760 url 合并列表中的列表 可能重复的问题: Flattening a shallow list in Python Comprehension for flattening a sequence of sequences? 我想是不是有更好的方法 我可以用一个循环来做,但是除了这样做还有什么更cool的用一行来做的方法?我用redu

  • 问题内容: 蟒蛇 我有一个清单清单。喜欢 我想计算每个列表在主列表中出现了多少次。 我的输出应该像 问题答案: 只需使用来自:

  • 问题内容: 我有一个 清单清单 : 我想转换为一个 集合, 即删除重复列表并从中创建一个仅包含 唯一 列表的新列表。 在上述情况下,所需答案将是 但是当我这样做时,它给了我错误 TypeError:无法散列的类型:“列表” 你能解决我的问题吗?提前致谢! 问题答案: 由于列表是可变的,因此不能进行哈希处理。最好的选择是将它们转换为元组并形成一个集合,像这样 我们一次遍历一个列表,将其转换为一个元组

  • 问题内容: 现在,我想创建一个新列表,其中包含中的所有值。这里的结果应该包含 问题答案: 使用以下方法尝试:

  • 问题内容: 我在python中有一个由列表列表建模的2D数组,我想提取该列。我进行了快速研究,发现了一种使用numpy数组的方法。问题是 我不想使用numpy, 所以不想将列表列表转换为numpy数组,然后使用[:,1]语法。我尝试在正常的列表列表上使用它,但显示错误,因此是不可能的。我正在为列表列表请求类似的东西,而不必遍历每个元素(在numpy数组中,使用[:,1]语法访问列比在数组元素上进行

  • 我在Python中进行多元线性回归,但由于某种原因,系数没有正确返回为列表。相反,将返回列表中的列表: 这将返回列表[]的列表中的值,而不是列表[]。知道为什么会这样吗?输出: 但这行得通: 输出:

  • 我有包含项目数组的类存储。 每个项目(类项目)有不同的体积,我正在添加项目到商店。假设我有20个项目,我把10个添加到2或3个不同的商店,我必须根据这些项目的数量在商店中排序。