kotlin语法糖 - 高阶函数使用

628 阅读1分钟

kotlin高阶函数简介

java 1.8有stream(),让处理列表数据很方便。那么kotlin有没有类似的函数呢?一查还真有,用法跟stream()差不多。

函数介绍

maxByOrNull --- 根据条件,筛选出最大值,返回itemBean
count --- 根据条件,统计个数,返回int
filter --- 根据条件,筛选列表,返回List<itemBean>
map --- 根据条件,映射出一个新的列表,返回List<T>
any --- 根据条件,是否有符合条件的,返回boolean
find --- 根据条件,查找出第一个符合条件的itemBean,返回itemBean
groupBy --- 分组,类型sql

测试的List

image.png

maxByOrNull、maxOfOrNull

maxByOrNull 筛选符合条件的最大值,返回itemBean
maxOfOrNull筛选符合条件的最大值,返回 比较的字段的类型(int/String/double等) image.png image.png

count

count 统计符合条件的个数,返回 int
image.png
image.png

filter

生成的列表数据是浅拷贝的,对象指向数据源!!!

image.png

filter筛选符合条件的item,成新的list
image.png

image.png

map

map类似stream()的map,映射出符合条件的List,返回值看给的条件的类型
image.png

image.png

any、find

any返回是否有符合条件的
find返回符合条件的第一个itembean

image.png

image.png

groupBy

groupBy 对条件进行分组,返回分组后的List

image.png

打印的log

groupBy:{
true=[DataBean{count1=1, count2=1}, DataBean{count1=2, count2=2}, DataBean{count1=3, count2=4}], 
false=[DataBean{count1=4, count2=8}, DataBean{count1=5, count2=16}, DataBean{count1=6, count2=32}]
}