java8的stream流常用例子
数据准备
//准备map数据
List
- stream().forEach
//1 stream().forEach的使用(对象list跟maplist是一样使用的)
mapDatas.stream().forEach(map -> {
System.err.println(map);
});
- stream().filter
//2 stream().filter 的用法 过滤出北京的数据
List
- stream().map
//3 stream().map 提取list对象的某个属性为list,也可以提取map的某个key
List snames = studentList.stream().map(student -> {
return student.getSname();
}).collect(Collectors.toList());
System.err.println(snames);
结果:
[典韦, 孙尚香, 李白, 王昭君]
- stream().sorted
//4 stream().sorted 根据某个属性排序
// 升序
// entity排序
List sortStudents = studentList.stream()
.sorted(Comparator.comparing(Student::getSno))
.collect(Collectors.toList());
System.err.println(sortStudents);
System.err.println("-------------");
// map 排序
List
- stream().collect 利用Collectors分组
//list entity分组
//list map 分组
分组过后排序
list entity 分组排序
Map> sortGroupStudent = studentList.stream()
.sorted(Comparator.comparing(Student::getSno))
.collect(Collectors.groupingBy(Student::getSex));
System.err.println(sortGroupStudent);
结果:
{女=[Student{sno='1233', sname='孙尚香', sex='女', birthday='2012-09-08', phone='12379', dorm='枪'}, Student{sno='1234', sname='王昭君', sex='女', birthday='2010-09-08', phone='12379', dorm='棍子'}], 男=[Student{sno='1231', sname='典韦', sex='男', birthday='2011-09-08', phone='12379', dorm='刀'}, Student{sno='1232', sname='李白', sex='男', birthday='2010-09-08', phone='12379', dorm='剑'}]}
list map 分组排序
Map>> sortGroupMap = mapDatas.stream().sorted(Comparator.comparing(map -> map.get("index")))
.collect(Collectors.groupingBy(map -> (map.get("province"))));
System.err.println(sortGroupMap);
结果:
{上海=[{listcount=15, province=上海, index=count1}, {listcount=45, province=上海, index=count3}, {listcount=75, province=上海, index=count5}, {listcount=105, province=上海, index=count7}, {listcount=135, province=上海, index=count9}], 北京=[{listcount=0, province=北京, index=count0}, {listcount=30, province=北京, index=count2}, {listcount=60, province=北京, index=count4}, {listcount=90, province=北京, index=count6}, {listcount=120, province=北京, index=count8}]}