java更新换代很快,目前是多少也没有关注,只是连java8还没有完全搞明白,都说java8可以省不少事,今天就记录一下。
1.最小值
//方式一,一般list的泛型是list<double>等形式
Optional<Double> min = 列表list.stream().min(Comparator.comparing(Function.identity()));
//方式二
list.stream().mapToDouble(Temp::getT).min()
2.最大值
//方式一
Optional<Double> max = list.stream().max(Comparator.comparing(Function.identity()));
//方式二 后面可以根据返回类型加不同的方法 例如:返回double -- getAsDouble()
list.stream().mapToDouble(Temp::getT).max()
3.平均值
OptionalDouble average = list.stream().mapToDouble(Double::doubleValue).average();
4.求和
list.stream().mapToDouble(Temp::getT).sum()
除了以上,还有其他形式的方式可以获取数据,可以根据自己的需求写。
注:因为返回的是 Optional<Double>(如果想直接返回double或者int,可以在min()或者max()方法的后面加上getAsInt()或者getAsDouble()),赋值给对象的属性的话,不能直接使用,那么就需要转换一下,optional提供几种方法可以使用:
T orElse(T other) 如果存在该值,返回值, 否则返回 other。
T get()
如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException
5.获取json对象中字段有空值的个数
(int) json.values().stream().map(o -> ObjectUtils.toString(o, null)).filter(StrUtil::isEmpty).count()