美文网首页
Java8中Lambda表达式及常用方法

Java8中Lambda表达式及常用方法

作者: 久伴我还是酒伴我 | 来源:发表于2019-04-17 18:32 被阅读0次

    简介

    Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。
    建议不要乱用,简洁,难懂,难以调试,维护人员想骂娘。
    大概介绍下常用的,不常用的暂时还没接触到,先不写

    将List集合中的某一项进行提炼,并组装另一个List集合

      String[] arrasys = {"1", "2", "3", "4"};
      List<String> string_List = Arrays.asList(arrasys);
      string_List.stream().map(v -> Integer.parseInt(v) ).collect(Collectors.toList());
    

    将List集合中的转换为Map

    
    Map<String, Long> resMap = languageList.stream().collect(Collectors.toMap(Language::getLangEname, a -> a.getId(), (k1, k2) -> k1));
    
    

    将List 集合进行遍历打印

     String[] arrasys = {"1", "2", "3", "4"};
     List<String> string_List = Arrays.asList(arrasys);
     string_List.stream().forEach(v -> {
      System.out.print(v + "; ");
     });
           
    

    将List进行过滤

    x.getDespatchAdviceTypeCode() 等于2的过滤出

    ageList.getItems().stream()
                            .filter(x -> ("2".equals(x.getDespatchAdviceTypeCode())))
                            .collect(Collectors.toList())
    

    求和

    BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
    //计算 数量
    int sum = appleList.stream().mapToInt(Apple::getNum).sum();
    

    指定数量集合

     // 相当于List集合从1添加到1000   Arrays.asList(1,2,3,4,5,.....1000);
     List<Integer> integerList = IntStream.range(1,1000).boxed().collect(Collectors.toList());
    

    List 分片

    List<Integer> numList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8);
    List<List<Integer>> partList = Lists.partition(numList, 3);
    // 输出结果[[1,2,3],[4,5,6],[7,8]]
    

    异步执行,并获取异步结果打印

      /**
       *runAsync方法不支持返回值。supplyAsync可以支持返回值。
       * @return
       */
     public String execute() {
            // 开始执行时间
            LocalDateTime startDateTime = LocalDateTime.now();
    
            List<Integer> integerList = IntStream.range(1,1000).boxed().collect(Collectors.toList());
    
           List<String> res= integerList.stream().map(v ->exc(v)).collect(Collectors.toList());
    
            res.stream().forEach(v -> System.out.println(v));
    
            long s = ChronoUnit.SECONDS.between(startDateTime, LocalDateTime.now());
            log.info("执行时间:{}",s);
            return String.valueOf(s);
     }
    
     public String exc(int i ) {
            try {
                Thread.sleep(20);
                log.info("{}开始执行第{}个",Thread.currentThread().getName(),i);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            return "第"+i+"个";
        }
    
    

    初始化0

    NumberUtils.INTEGER_ZERO
    

    赋值

    // 如果invoice 为空,则执行orElse
    Response res = Optional.ofNullable(invoice).orElse(new Invoice());
    

    时间转换

    try {
        Date startDate = DateFormatUtils.ISO_DATE_FORMAT.parse(startDateStr);
        Date endDate = DateFormatUtils.ISO_DATE_FORMAT.parse(endDateStr);
        return endDate.compareTo(startDate) >= 0;
    } catch (ParseException e) {
        return Boolean.FALSE;
    }
    
    DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(taxPeriod.getExpiredDate(), PURE_DATE_PATTERN), 2);
    if (getTaxPeriodCount(forCompanyId)) {
        if (isUpdateSyncTime) {
            taxPeriod.setSyncTime(DateUtil.format(dateTime, PURE_DATE_PATTERN));
        }
        return this.update(taxPeriod, WrapperUtils.query(InvoiceTaxPeriod.class, ImmutableBiMap.of(COMPANY_ID, forCompanyId)));
    }
    taxPeriod.setSyncTime(DateUtil.format(dateTime, PURE_DATE_PATTERN));
    
    Date checkDateStart = DateUtils.parseDate(trs.getCheckDateStart(), new String[]{"yyyy-MM-dd", "yyyyMMdd"});
    
    

    字符串拼接

      // startDate="2019-10-15 00:00:00"
      String startDate = "2019-10-15".concat(" 00:00:00");
    

    指定不可变Map

    Map<String, String> map = ImmutableBiMap.of("name", "张三","age", "15");
    

    相关文章

      网友评论

          本文标题:Java8中Lambda表达式及常用方法

          本文链接:https://www.haomeiwen.com/subject/qgxowqtx.html