Java List筛选

我们经常需要对List进行筛选,以满足业务需求。而根据某个字段进行筛选是一种常见的需求,本文将介绍如何使用Java 8的Stream API来实现这一功能。假设我们有一个Person类,包含id、name和age三个字段:

public class Person {
    private int id;
    private String name;
    private int age;    public Person(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }    public int getId() {
        return id;
    }    public String getName() {
        return name;
    }    public int getAge() {
        return age;
    }
}

现在我们有一个List,需要根据age字段筛选出年龄大于等于18岁的人。传统的做法是使用for循环遍历List,然后逐个判断每个Person的age字段是否符合条件。但是这种做法比较繁琐,而且代码可读性不高。使用Java 8的Stream API可以更加简洁地实现这一功能。首先,我们需要将List转换成Stream,然后使用filter方法进行筛选。filter方法接受一个Predicate参数,用于判断每个元素是否符合条件。在本例中,我们需要判断每个Person的age字段是否大于等于18岁,因此可以使用lambda表达式来实现:

List<Person> persons = ...;
List<Person> filteredPersons = persons.stream()
        .filter(person -> person.getAge() >= 18)
        .collect(Collectors.toList());

上述代码中,我们使用stream方法将List转换成Stream,然后使用filter方法进行筛选。最后使用collect方法将筛选后的结果转换成List。除了使用lambda表达式,我们还可以使用方法引用来实现筛选。在本例中,我们可以使用Person::getAge方法引用来获取每个Person的age字段:

List<Person> persons = ...;
List<Person> filteredPersons = persons.stream()
        .filter(person -> person.getAge() >= 18)
        .collect(Collectors.toList());

上述代码中,我们使用Person::getAge方法引用来获取每个Person的age字段,然后使用lambda表达式来判断是否大于等于18岁。总结本文介绍了如何使用Java 8的Stream API来根据某个字段筛选List。使用Stream API可以更加简洁地实现这一功能,而且代码可读性更高。在实际开发中,我们可以根据具体业务需求来选择使用lambda表达式或方法引用来实现筛选。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据您提供的引用内容,我们可以使用Java Stream来筛选Java List集合中的对象。以下是几种常见的筛选方法: 方法一: 为了从集合中筛选出满足特定条件的对象,您可以使用filter()方法。例如,如果您想筛选出性别为男性的对象,可以按如下方式操作: ``` List<Student> maleStudents = list.stream() .filter(student -> Objects.equals(student.getSex(), "男")) .collect(Collectors.toList()); ``` 该方法使用filter()方法根据指定的条件进行筛选,并使用collect()方法将结果收集到新的List中。 方法二: 如果您想要对筛选结果进行排序,可以使用sorted()方法。例如,按照姓名对性别为男性的对象进行排序: ``` List<Student> sortedMaleStudents = list.stream() .filter(student -> Objects.equals(student.getSex(), "男")) .sorted(Comparator.comparing(Student::getName)) .collect(Collectors.toList()); ``` 该方法先使用filter()方法筛选出满足条件的对象,然后使用sorted()方法按照指定的属性进行排序。 方法三: 如果您想要去除重复的对象,可以使用distinct()方法。例如,根据性别去除重复的对象: ``` List<Student> uniqueStudents = list.stream() .distinct() .collect(Collectors.toList()); ``` 该方法使用distinct()方法去除重复的对象,并使用collect()方法将结果收集到新的List中。 以上是几种常见的Java List集合对象筛选方法,您可以根据自己的需求选择适合的方法进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZeroBug源码分享社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值