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

Java中用于过滤的Lambda表达式

储嘉悦
2023-03-14
    null
public class Person
{
    private String name;
    private List<Hobby> hobbyList = new ArrayList<>();
    ...
}

java:

public class Hobby
{
    private String name;
    private Person person;
    private Type type;
    ...
}

type.java:

public class Type
{
    private String name;
    private List<Hobby> hobbyList = new ArrayList<>();
    ...
}

人与嗜好之间是1:m关系,类型与嗜好之间是1:m关系。

List<Person> filteredList = new LinkedList<>();
for (Person p : persons)
{
    for (Hobby h : p.getHobbyList())
    {
        if(h.getType.getName.equals("Ball"))
        {
            if(!filteredList.contains(p))
            {
                filteredList.add(p);
            }
        }
    }
}

共有1个答案

左丘子平
2023-03-14

做为

List<Person> filteredList = persons.stream()
                .filter(p -> p.getHobbyList().stream().anyMatch(h -> h.getType().getName().equals("Ball")))
                .collect(Collectors.toList());

[更新]

我看到你更新了问题。根据您的更新,以下操作应该适用于您:

Set<Person> filteredSet = persons.stream()
                .filter(p -> p.getHobbyList().stream().anyMatch(h -> h.getType().getName().equals("Ball")))
                .collect(Collectors.toSet());
 类似资料:
  • 问题内容: 我有一堂课: 然后,我有了另一个主要功能,其中有一个功能,必须根据年份过滤该项目列表,并获得名称列表作为结果。 您能告诉我如何使用Java 8 Lambda表达式吗? 谢谢 问题答案: 好吧,您没有说明确切的过滤条件,但是假设您希望按给定年份过滤元素:

  • 问题内容: 我想在Java中构建一个正则表达式,该正则表达式将在FilenameFilter中传递以过滤目录中的文件。 问题是我无法理解正则表达式“思维模型”的问题:) 这是我用来选择要排除的文件的正则表达式 (((ABC | XYZ))+ \ w * Test.xml 我想做的是选择所有以Test.xml结尾但不以ABC或XYZ开头的文件。 您能否添加任何可以帮助我应对正则表达式的资源。 谢谢

  • 问题内容: 我正在通过Java 8中的lambda表达式 当我更改线程代码时,它工作正常 转换为lambda表达式为 但是我无法转换FilenameFilter表达式 并成功转换为 它给错误,如日食 这行有多个标记 -语法错误,请插入“;” 完成语句 -语法错误,插入“}”以完成Block- 语法错误,插入“ AssignmentOperator Expression”以完成分配 问题答案: 首先

  • 问题内容: 我有两个列表,我要过滤两个列表都包含的thoose元素。我想用lambda表达式做到这一点。 用户getName和客户端getUserName都返回String。 这是我的示例代码: 问题答案: 但这效率很低,因为它是O(m * n)。您最好创建一组可接受的名称: 还要注意,它并不严格等同于您拥有的代码(如果已编译),如果有多个用户具有与该客户端相同的名称,则该客户端会将同一客户端两次

  • 我有一个类似这样的组对象 和如下所示的Item对象

  • 过滤表达式 mitmproxy工具中的许多命令都使用过滤器表达式。过滤器表达式由以下运算符组成: 命令 描述 〜a 匹配响应资源:CSS,Javascript,Flash,images。 〜b regex Body 〜bq regex 请求的Body 〜bs regex 响应的Body 〜c int HTTP响应码 〜d regex 域名 〜dst regex 匹配目标地址 〜e 匹配错误 〜h