首页 > 解决方案 > Java 8 如何使用另一个列表中的参数从列表中获取一些元素

问题描述

我不确定之前是否有人问过。例如,如何从以下列表中获取所有用户,其中 rightId 等于 30。

用户对象:

public class User {   
    private int id;   
    private String email;

    private List<Rights> RightsSet;
}

用户权利:

public class Rights{
    private int id;
    private String Name;

    private List<User> userSet;
}

该关系是ManyToMany,我使用JPA。但我不会使用 namedQuery 或其他 SQL 语句。

我试过这个:

List<User> userList = em2.getAllEntity(User.class); //I get all User
1.
List<User>o = userList.stream()
                .filter(x -> x.getRightsSet().stream()
                    .anyMatch(y -> y.getId() == 5201)
                    )
                .collect(Collectors.toList());
2. 
List<User> rights = userList.stream()
               .filter(x -> x.getRightsSet().stream()
                        .filter(y -> y.getId() == 31).findAny().orElse(null) != null)
                .collect(Collectors.toList());

有人能帮我吗?

标签: javajpajava-8java-stream

解决方案


推荐阅读