12. Static class 与non static class的区别。

这里写图片描述
collectors.groupingBy是java.util.stream.Collectors类中的一个静态方法,它是用于进行分组操作的。在使用这个方法时,我们需要传递一个Function参数,用于指定按照哪个属性或条件进行分组。 然而,collectors.groupingBy方法也可以非静态的Lambda表达式一起使用。也就是说,我们可以使用一个非静态的方法来作为groupingBy方法的参数。 例如,假设我们有一个Student类,其中包含了name和age属性。我们想要根据年龄进行学生分组,但是我们希望使用一个非静态的Lambda表达式来定义分组条件。 我们可以这样做: ``` public class Student { private String name; private int age; // constructors, getters, setters // non-static lambda expression public Predicate<Student> ageGreaterThan(int age) { return student -> student.getAge() > age; } } public static void main(String[] args) { List<Student> students = Arrays.asList( new Student("John", 20), new Student("Mike", 22), new Student("Sarah", 18), new Student("Emma", 21) ); Map<Boolean, List<Student>> groups = students.stream() .collect(Collectors.groupingBy(Student::ageGreaterThan(20))); System.out.println("Greater than 20: " + groups.get(true)); System.out.println("Less than or equal to 20: " + groups.get(false)); } ``` 在上面的示例中,我们在Student类中定义了一个非静态的Lambda表达式ageGreaterThan,它返回一个Predicate<Student>对象。我们在groupingBy方法中使用Student::ageGreaterThan(20)来指定分组条件,即将年龄大于20的学生分为一组,将年龄小于或等于20的学生分为另一组。 这样,我们就可以使用非静态的Lambda表达式来进行分组操作,使得代码更加灵活和可读性更高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值