假定有一列实体类对像
List list = ();
去重,去除重复对象(每个属性的值都一样的),需要注意的是要先重写对象User的equals和hashCode方法
List distinctList = ().distinct().collect(());
排序,按id升续排列,如果要降续则改成:(a, b) -> () - (); a和b都是变量名(可以按自己意愿取名字),都是list中的对象的实例
List sortList = ().sorted((a, b) -> () - ()).collect(());
过滤,按照自己的需求来筛选list中的数据,比如我筛选出不及格的(小于60分)的人,t为实例
List filterList = ().filter(t -> () < 60).collect(());
map, 提取对象中的某一元素,例子中我取的是每个人的name,注意list中类型对应,如果取的是id或者班级,就应该是integer类型
List mapList = ().map(t -> ()).collect(());
统计,统计所有人分数的和, 主要我设置的分数属性是double类型的,所以用mapToDouble,如果是int类型的,则需要用mapToInt
double sum = ().mapToDouble(t -> ()).sum();
int count = ().mapToInt(t -> ()).sum();
分组, 按照字段中某个属性将list分组
Map> map = ().collect((t -> ()));
("按年级分组"+map);
/*然后再对map处理,这样就方便取出自己要的数据*/
for(> entry : ()){
("key:"+());
("value:"+());
}
多重分组,先按年级分组,再按班级分组
Map>> groupMap = ().collect((t -> (), (t -> ())));
("按照年级再按班级分组:"+groupMap);
("取出一年级一班的list:"+(1).get(1));
多重分组,一般多重分组后都是为了统计,比如说统计每个年级,每个班的总分数
Map> sumMap = ().collect((t -> (), (t -> (), (t -> ()))));
(sumMap);
("取出一年级一班的总分:"+(1).get(1));
stream是链式的,这些功能是可以一起使用的,例如:计算每个年级每个班的及格人数
Map> integerMap = ().filter(t -> () >= 60).collect((t -> (), (t -> (), ())));
("取出一年级一班及格人数:"+(1).get(1));