一、java8date

使用范例:

LocalDate today = LocalDate.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
for (long i = DAY_OF_STATICS - 1; i >= 0; i--) {
      Map<String, String> dayStatistics = new HashMap<>();
      String dayStr = today.minusDays(i).format(fmt);
      dayStatistics.put(STATICS_KEY, dayStr);
      Long dayTotal = queryMap.get(dayStr) == null ? 0L : queryMap.get(dayStr);
      dayStatistics.put(STATICS_VALUE, String.valueOf(dayTotal));
      dayStatisticsList.add(dayStatistics);
      total += dayTotal;
}

 二、Optional

Optional<T>类是一个容器类,代表一个值存在或不存在。原来用null表示一个值不存在,现在Optional可以更好的表达这个概念,并且可以避免空指针

常用方法:

Optional.of(T t):创建一个Optional实例,t为null则抛异常

Optional.empty():创建一个空的Optional实例

Optional.ofNullable(T t):若t不为null,创建Optional实例,否则创建空实例

isPresent():判断是否包含值

orElse(T t):如果调用对象包含值,返回该值,否则返回t

orElseGet(Supplier s):如果调用对象包含值,返回该值,否则返回s获取的值

map(Function f):如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()

flatMap(Function mapper):与map类似,要求返回值必须是Optional.

利用optional去掉if/else

如:
if(sysParam!=null) {
  result.setParamValue(sysParam.getParamValue());        
}
用optional实现:
Optional paramOption = Optional.ofNull(sysParam);
result.setParamValue(paramOption.map(param->param.getParamValue).orElse(""));
或paramOption.map(param->param.getParamValue).ifPresent(result::setParamValue);