本文已参与 「新人创作礼」活动,一起开启掘金创作之路。
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:有一个输入参数,判断是否正确!
我们在代码里就可以使用这四个函数式接口,来进行公共代码的提取,让别人一看到我们的方法,就知道我们的方法是干什么的,提高代码的可读性。