java8常用的一些方法

83 阅读1分钟

本文已参与 「新人创作礼」活动,一起开启掘金创作之路。

java8作为国内开发的基础,作为一名合格的程序员,我们势必要在日常的开发过程中,熟练使用其中的一些用法和特性,下面是我工作中用到的一些用法。

1. java8获得月初最后一天,月末最后一天

LocalDate localDate=LocalDate.now(); LocalDate lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth()); LocalDate startDayOfMonth = lastDayOfMonth.with(TemporalAdjusters.firstDayOfMonth());

2. list分组

Map<String, List<FaultAchievementVo>> groupBy = list.stream().collect(Collectors.groupingBy(FaultAchievementVo::getAlertEventCode));

3. 遍历map

groupBy.entrySet().forEach(r->{ Map<String,String> map=new HashMap<>(); List<FaultAchievementVo> list2=r.getValue(); list2.stream().forEach(d->{ map.put(d.getStaffCode(),d.getStaffName()); }); resultMap.put(r.getKey(),map); });

4. list sort()排序,默认是升序,

allList.stream().sorted(Comparator.comparingLong(FaultAchievementVo::getNums).reversed()).limit(10).collect(toList())

5. 计算一个list, 重复元素出现的次数

List<String> codeList=new ArrayList(); //计算每个人的绩效 <code,nums> Map<String,Long> achievement= codeList.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

6. list转map

Map<Integer,String> segMap=segmentList.stream().collect(Collectors.toMap(SegmentStatusDTO::getSegmentCode,SegmentStatusDTO::getSegmentName));

7. 初始化一个list

List<String> statusList=Arrays.asList(EqpStatusEnum.NORMAL.getTitle(),EqpStatusEnum.WARNING.getTitle(), EqpStatusEnum.TROUBLE.getTitle(),EqpStatusEnum.DANGER.getTitle());

8. 给map集合塞一个默认值

statusValueList.forEach(r->{ List<EquipChartCategoryVo> list=map.getOrDefault(String.valueOf(r),new ArrayList<>());

9.ENUM的用法

  • values() 返回枚举类中所有的值。

将enmu里面的元素转为map集合

Map<Integer,String> operationMap = Arrays.stream(EqpStatusEnum.values()).collect(Collectors.toMap(EqpStatusEnum::getStatus, EqpStatusEnum::getTitle));

将enmu里面的元素转为list集合

List<AlertLevelEnum> levels = Arrays.asList(AlertLevelEnum.values());

10.四个函数式接口

java.util.function 所有的函数式接口都可以用来简化编程模型: 都可以使用lambda表达式简化!

/** * 函数式接口是我们现在必须要要掌握且精通的 * 4个!

  • Function : 有一个输入参数有一个输出参数
  • Consumer:有一个输入参数,没有输出参数
  • Supplier:没有输入参数,只有输出参数
  • Predicate:有一个输入参数,判断是否正确!

我们在代码里就可以使用这四个函数式接口,来进行公共代码的提取,让别人一看到我们的方法,就知道我们的方法是干什么的,提高代码的可读性。