写在最前面的总结
stream在开发过程能最大限度的简化代码和提高开发效率,个人在开发工作中比较喜欢使用。以下是比较常用的用法,后续会再进行补充。
1. 将list中的对象的某一属性取出组成一个列表
List<Map<String, Object>> valueList = new ArrayList<>();
.........// 给valueList赋值
List<String> value = valueList.stream()
.map(o-> {
return o.get("value").toString();
// 如果不是Map是对象,那就是return o.getXXXX().toString();
})
.collect(Collectors.toList());
2. 根据特定条件筛选list数组
List<Map<String, Object>> valueList = new ArrayList<>();
.........// 给valueList赋值
List<Map<String, Object>> mapList = valueList.stream()
.filter(o-> {
String a = o.get("date").toString();
String b = "2020-07-15";
return a.equals(b); // 筛选出a=b的map最后组成一个
})
.collect(Collectors.toList());
3. 根据某一属性值分组
List<Map<String, Object>> valueList = new ArrayList<>();
.........// 给valueList赋值
Map<String, List<Map<String, Object>>> listMap = valueList.stream()
.collect(Collectors.groupingBy(o-> {
return o.get("date").toString();
}));
4. 去重
List<Map<String, Object>> valueList = new ArrayList<>();
.........// 给valueList赋值
valueList = valueList.stream()
.distinct()
.collect(Collectors.toList());
5.相加
List<Map<String, Object>> valueList = new ArrayList<>();
.........// 给valueList赋值
Integer sum = valueList.stream()
.mapToInt(o -> {
return Integer.parseInt(o.get("num").toString());
})
.sum();
6.排序
User对象:一个age属性
public void sort(List<User> userList) {
// 按照实体类中的age属性升序排列
userList= userList.stream()
.sorted(Comparator.comparing(User::getAge))
.collect(Collectors.toList());
// 按照实体类中的age属性降序排列
userList= userList.stream()
.sorted(Comparator.comparing(User::getAge).reversed())
.collect(Collectors.toList());
}