java - 根据对象中的变量从对象列表中获取对象

标签 java list collections comparator

我有用户对象列表,我只想根据用户对象中的变量从列表中获取用户对象。

public class User {

    private int id;

    private String sex;

    private int age;

    private String country;

    /**
     * Getter and setter for all variables
     */
}

我有一个这样的模型类。现在我有了用户对象列表。

List<User> users = new ArrayList<User>();

如果用户是男性,我想从用户列表中获取对象。

List<User> ageList = new ArrayList<User>();
for(User object : users) {
    if(object.getSex().equals("Male")){
        ageList.add(object);
    }
}

我不喜欢上面的方法。有没有更好的方法根据对象中的变量从对象列表中获取对象..?

Java Collections 有什么功能吗?我们可以使用 Java Comparator 解决这个问题吗?

最佳答案

如果您使用 Guava , 你可以使用 Collections2.filter:

Collection<User> males = Collections2.filter(users, new Predicate<User>() {
    @Override
    public boolean apply(User user) {
        return user.getSex().equals("Male");
    }
});

使用 Java 8,您可以做得更好:

Collection<User> males = Collections2.filter(users, user -> user.getSex().equals("Male"));

关于java - 根据对象中的变量从对象列表中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6242276/

相关文章:

java - 添加两个自己类型的列表

java - 将 Iterable 转换为 Collection 的简单方法

android - 在android中向下滑动 View

java - 如何在 Linux 上卸载 JDK 8 (8u73)?

java - 如何使用带有 spring api 的 JPA 查询进行软删除?

java - 如何使用 "departure_time"作为参数通过距离矩阵 api 将 future 时间传递到 HTTP 请求中

从列表中的多个列表中删除空值

python - 对带有子列表的可迭代对象的每个元素应用一个函数

c# - 当 Item 改变时通知 ObservableCollection

java - 找出数组列表中所有可能的组合 : java