# lombok 学生信息
#判空
public static void show1(List<Student> list){
list.filter(x->x!=null);
list.filter(Objects::nonNull);
}
?
?
# 按成绩排序 -- 升序
public static void show1(List<Student> list) {
#方式一
//Collections 升序
Collections.sort(list,new Comparator<Student>(){
# 统计全校所有的学生: 1.成绩>=80分 且 2.每个分数对应的学生信息
public static void show1(List<Student> list){
Map<Float, List<Student>> collect =
list.stream().filter(x->x.getScore()>=80).collect(Collectors.groupingBy(Student::getScore));
}
# 整数求和
int sum = list.stream().mapToInt(Student::getAge).sum();
?
# float double 求和
double sum2 = list.stream().mapToDouble(Student::getScore).sum();
?
#BigDecimal 求和
BigDecimal sum3 = list.stream().map(Student::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add);
class BigDecimalUtils {
public static BigDecimal ifNullSet0(BigDecimal num) {
return null == num ? BigDecimal.ZERO : num;
}
?
public static BigDecimal sum(BigDecimal... nums) {
BigDecimal result = BigDecimal.ZERO;
for (BigDecimal num : nums) {
result.add(ifNullSet0(num));
}
return result;
}
}
?
#BigDecimal求和
BigDecimal sum4 = list.stream().map(Student::getMoney).reduce(BigDecimal.ZERO, BigDecimalUtils::sum);
# 最大年龄
Integer maxAge = list.stream().map(Student::getAge).max(Integer::compareTo).get();
?
# 最小出生日期
Date minBirthDate = list.stream().map(Student::getBirthDate).min(Date::compareTo).get();
?
#钱最多的
BigDecimal maxMoney = list.stream().map(Student::getMoney).max(BigDecimal::compareTo).get();
#去重:会调用 student的hashcode equals方法
list.stream().distinct().collect(Collectors.toList())
#获取id列表
List<Integer> ids = list.stream().map(Student::getId).collect(Collectors.toList());
/**
* List -> Map
* 需要注意的是:
* toMap 如果集合对象有重复的key,会报错Duplicate key ....
* student1,student2的id都为1。
* 可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
*/
Map<Integer, Student> mapStus = list.stream().collect(Collectors.toMap(Student::getId,a->a,(k1,k2)->k1));
原文:https://www.cnblogs.com/mxxiao/p/13876098.html