使用Java8新特性对List对象进行遍历、过滤、排序等处理

文章介绍了如何使用Java8的Stream流对List对象进行操作,包括使用forEach遍历,filter过滤条件,findFirst或findAny查询特定元素,distinct去重,以及sorted排序。此外,还展示了如何利用groupingBy进行分组操作,如按专业分组学生。
摘要由CSDN通过智能技术生成

使用java8 新特性stream流对List对象进行遍历、过滤、查询、去重、排序、分组

 

新建一个名为Student的类,包含以下属性:

public class Student {
    private String name;
    private int age;
    private String major;
    private double score;
  
    // 构造函数、getter和setter方法
}

现在我们有一个List<Student>类型的列表,可以使用Java8的stream流对它进行遍历、过滤、查询、去重、排序、分组等操作。

1、遍历

使用forEach()方法遍历List中的每一个元素:

List<Student> list = new ArrayList<>();
// 添加元素到list

list.stream().forEach(System.out::println);

2、过滤

使用filter()方法过滤出分数大于80分的同学:

List<Student> list = new ArrayList<>();
// 添加元素到list

List<Student> filteredList = list.stream()
                                 .filter(s -> s.getScore() >= 80.0)
                                 .collect(Collectors.toList());

3、查询

使用findFirst()或findAny()方法查询第一个或任意一个元素:

List<Student> list = new ArrayList<>();
// 添加元素到list

Optional<Student> studentOptional = list.stream()
                                         .filter(s -> s.getName().equals("Tom"))
                                         .findFirst();

4、去重

使用distinct()方法去重

List<Student> list = new ArrayList<>();
// 添加元素到list

List<Student> distinctList = list.stream()
                                 .distinct()
                                 .collect(Collectors.toList());

5、排序

使用sorted()方法对元素进行排序:

List<Student> list = new ArrayList<>();
// 添加元素到list

// 按照分数升序排序
List<Student> sortedList = list.stream()
                               .sorted(Comparator.comparingDouble(Student::getScore))
                               .collect(Collectors.toList());

// 按照年龄降序排序
List<Student> reversedList = list.stream()
                                 .sorted(Comparator.comparingInt(Student::getAge).reversed())
                                 .collect(Collectors.toList());

6、分组

使用groupingBy()方法对元素进行分组:

List<Student> list = new ArrayList<>();
// 添加元素到list

Map<String, List<Student>> groupByMajor = list.stream()
                                              .collect(Collectors.groupingBy(Student::getMajor));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值