使用stream求list的对象属性的和
假设有一个Student类,其中有一个属性是score,可以通过以下代码求出List<Student>中score的和:
List<Student> students = new ArrayList<>(); // 添加学生对象到List中
int sum = students.stream().mapToInt(Student::getScore).sum();
这里使用了mapToInt方法将每个Student对象映射成其score属性的值,然后调用sum方法求和。
stream返回一个map集合
可以使用以下代码将List<Student>转化为Map<String, Integer>:
Map<String, Integer> nameScoreMap = students.stream() .collect(Collectors.toMap(Student::getName, Student::getScore));
这里使用了Collectors.toMap方法将List转化为Map,其中getName方法返回Student的名字,getScore方法返回Student的score属性值。
stream添加list的对象
List<Student> students = Stream.of(
new Student("Tom", 80),
new Student("Mary", 90),
new Student("John", 75))
.collect(Collectors.toList());
这里使用了Stream.of方法创建一个流,其中包含三个新建的Student对象,然后调用collect方法将流转化为List<Student>。
stream排序
//正序排列slist=list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());//倒序排列 list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());
按自然升序对集合进行排序
list.stream().sorted();
自然序降序使用Comparator
提供reverseOrder()
方法
list.stream().sorted(Comparator.reverseOrder());
还可以使用Java8的lambda表达式和Comparator接口来实现这个排序功能,代码如下:
Collections.sort(openTimeList, Comparator.comparing(o -> o.getWorkDay()));
这段代码使用了Comparator.comparing方法来创建一个Comparator对象,主要是根据OpenTime对象的workDay属性来进行排序,通过lambda表达式o -> o.getWorkDay()来指定workDay属性的取值方式,最后调用Collections.sort方法来进行排序。