JAVA stream应用
一、根据某个参数查询List中匹配的数据(单个对象)
orElse(null):如果没有找到,则将结果置为null
1.单个条件
User user = list.stream()
.filter(m -> "123".equals(m.getName()))
.findAny()
.orElse(null);
2.多个条件
User user = list.stream()
.filter(m -> "123".equals(m.getName()))
.filter(m -> "1".equals(m.getType()))
.findAny()
.orElse(null);
二、根据某个参数查询List中匹配的数据(多个对象集合)
1.单个条件
List<User> userList = list.stream()
.filter(m -> "123".equals(m.getName()))
.collect(Collectors.toList());
2.多个条件
List<User> userList = list.stream()
.filter(m -> "123".equals(m.getName()))
.filter(m -> "1".equals(m.getType()))
.collect(Collectors.toList());
三、根据某个参数对List进行排序
1.针对某个参数进行排序(默认顺序)
List<User> userList = list.stream()
.sorted(Comparator.comparing(User::getType))
.collect(Collectors.toList());
2.针对某个参数进行倒序
List<User> userList = list.stream()
.sorted(Comparator.comparing(User::getType).reversed())
.collect(Collectors.toList());
四、对List进行循环
userList .stream().forEach(riOrder -> {
//方法体
});
五、对List进行参数累加
list.stream()
.map(User::getAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add)
六、对List进行去重
1.对LIst类型的进行去重
List<String> strList= list.stream()
.distinct()
.collect(Collectors.toList());
1.对LIst<对象>类型的进行去重
List<User> userList = list.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new));