java8 stream 应用

java8 stream 应用

最大最小

List<Integer> list=Arrays.asList(8,2,5,4);
Optional<Integer> max = list.stream().max(Comparator.comparingInt(Integer::intValue));
Optional<Integer> min = list.stream().min(Comparator.comparingInt(Integer::intValue));
System.out.println(max.get());
System.out.println(min.get());
//对象获取
User u=new User("a",19);
User u1=new User("b",45);
User u2=new User("c",63);
List<User> list1=Arrays.asList(u,u1,u2);
Optional<User> maxu = list1.stream().min(Comparator.comparingInt(User::getAge));
System.out.println(maxu.get().getName());

求和

Integer j = list1.stream().map(m -> m.getAge()).reduce((a, b) -> a + b).get();
Integer k = list.stream().map(Integer::intValue).reduce((a, b) -> a + b).get();

分组

Map<String, List<ClearStockInfoVo>> map = clearStockInfoVoList.stream()
                        .collect(Collectors.groupingBy(e -> e.getQcrq().substring(0, 6)));

过滤

List<ManageCategoryRules> list = rules.stream().filter(new Predicate<ManageCategoryRules>() {
                @Override
                public boolean test(ManageCategoryRules f) {//当前分类或者父分类满足条件
                    if (f.getSaleCategoryId() == null) return false;
                    if (request.getSaleCategoryId().equals(f.getSaleCategoryId())) return true;
                    SaleCategory saleCategory = saleCategoryMapper.selectById(request.getSaleCategoryId());
                    return f.getSaleCategoryId().equals(saleCategory.getParentId());
                }
            }).collect(Collectors.toList());

optional

String msg="0";
msg= Optional.ofNullable(msg).filter(m -> "0".equals(m)).orElse("other");
System.out.println(msg);
msg= Optional.ofNullable(msg).filter(m -> "0".equals(m)).map(m->"new").orElse("other");
System.out.println(msg);

过滤2

long t = list.stream().filter(distinctByKey(e -> e.getDate())).count();
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值