简介
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");
网友评论