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

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

 

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

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

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

1、遍历

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

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

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

2、过滤

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

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

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

3、查询

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

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

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

4、去重

使用distinct()方法去重

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

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

5、排序

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

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

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

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

6、分组

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

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

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

你可能感兴趣的:(Java集合,list,数据结构)