一、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);