1.8jdk学习笔记

好文章:

  1.流的使用:https://mp.weixin.qq.com/s/Y1n8BFBKrrhf-D-skP7ZGQ

  

一。Lambda

1.基础的map遍历:

HashMap<String, String> map = new HashMap<>();
        map.put("a","1");
        map.put("b","2");
        map.put("c","3");
        map.put("d","4");
        for (String key:map.keySet()) {
            System.out.println("k="+key+", v="+map.get(key));
        }

        map.forEach((k,v) -> {
            System.out.println("k="+k+", v="+map.get(k) +"--------"+v);
        });

        map.forEach((k,v) -> {
            if("d".equals(k)){
                System.out.println("k="+k+", v="+v );
            }
        });

2.List使用:

二.Stream使用

1.list中简单使用

List<String> list = Arrays.asList("张三", "李四", "王五", "xuwujing");

List<String> collect = list.stream().filter(s -> !"李四".equals(s)).collect(Collectors.toList());

三。时间LocalDate

提供了很多时间的方法,这个只要想到时间。就可以百度看具体的提供方法使用

 //获取本地日期
        LocalDate now = LocalDate.now();
        System.out.println(now);
        LocalDateTime now1 = LocalDateTime.now();
        System.out.println(now1);
        System.out.println(now1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        System.out.println(now1.plusDays(5));//后五天的时间
        //localDate提供了很多关于时间的方法,需要结合业务。都可以查到时间对应的method

四。demo

 ArrayList<String> strings = new ArrayList<> ();
        strings.add ("asd11");
        strings.add ("vsda3");
        strings.add ("bsdfa434");

        //1.fitter过滤  foreach是一个最终操作后续是不能使用其他的stream的
        strings.stream ().filter ((x)->x.startsWith ("a")).forEach (System.out::println);//asd11
        //2.sort排序  需要注意的是,排序只创建了一个排列好后的Stream,而不会影响原有的数据源,排序之后原数据strings是不会被修改的
        strings.stream ().sorted ().filter (x->x.equals ("asd11")).forEach (System.out::println);//asd11
        //3.map提供了很多可以处理数据的方法
        strings.stream ().map (String::toUpperCase).sorted ((a,b)->b.compareTo (a)).forEach (System.out::println);//VSDA3  BSDFA434  ASD11
        strings.stream ().map (String::length).limit (5).forEach (System.out::println);//5 5 8

        //4.match 提供了判断boolean类型的值
        boolean test01 = strings.stream ().anyMatch (x->x.startsWith ("v"));
        System.out.println (test01);//true
        boolean b = strings.stream ().allMatch (x -> x.startsWith ("bsdfa434"));
        System.out.println (b);//false

        //5.count 计算 最终操作
        long b1 = strings.stream ().filter (x -> x.startsWith ("b")).count ();
        System.out.println (b1);
    }
    @Data
    public  class Person{
        String name;
        String age;
    }
 /**
     * 方法抽取-- 获取今日已核销订单数量(以核销码为维度统计)
     *    今日已核销订单统计(如果一个单子多个码,有一个未核销则归属未核销)
     * @param code
     * @return
     */
    private int getTodayConsumeCount(ConsumeCodeEntity code) {
        List<ConsumeCodeEntity> consumeCodeEntities = this.orderConsumeTotal(code);
        if (CollectionUtils.isEmpty(consumeCodeEntities)) {
            return 0;
        } else {
            //今日订单统计。通过orderId聚合订单数量(一个订单存在对应多个核销码,但是查出来的是所有核销码数据,所以需要处理结果集group by orderId)
            Map<String, List<ConsumeCodeEntity>> collect = consumeCodeEntities.stream().collect(Collectors.groupingBy(ConsumeCodeEntity::getOrderId));

            //今日已核销订单统计(如果一个单子多个码,有一个未核销则归属未核销)
            int[] a = {0};
            collect.forEach((k, v) -> {
                if (v.stream().allMatch(this::isConsume)) {
                    a[0]++;
                }
            });
            return consumeCodeEntities.size();
        }
    }

    private boolean isConsume(ConsumeCodeEntity entity) {
        return ConsumeCodeStatusEnum.CONSUMED.getCode().equals(entity.getCodeStatus());
    }
@Override
public List<MonthlyAssessmentEntity> findByStoreIds(List<Long> storeIds, String tte) {
    return Optional.ofNullable(storeIds).map(s -> {
        String preDay = StringUtils.isBlank(tte) ? LocalDateUtils.preDayYMR() : tte;
        log.info("月累计评价数据查询 storeIds:{} tte {}",storeIds,preDay);
        return monthlyAssessmentDao.queryByStoreIdsAndTte(s, preDay);
    }).orElse(Lists.newArrayList());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值