Java8中Lambda表达式及常用方法

简介

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");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容