public static void main(String[] args) {
List<LocalDate> localDates= Lists.newArrayList();
for(long i=0;i<10000000;i++){
localDates.add(toLocalDate(toDate(RandomUtils.nextLong(0,System.currentTimeMillis()))));
}
toString(localDates, new Function<LocalDate, String>() {
@Override
public String apply(LocalDate localDate) {
int month=localDate.getMonthValue();
int day=localDate.getDayOfMonth();
return localDate.getYear()+"-"+(month>9?String.valueOf(month):"0"+month)+'-'+(day>9?String.valueOf(day):"0"+day);
}
});
toString(localDates, new Function<LocalDate, String>() {
@Override
public String apply(LocalDate localDate) {
return localDate.format(yyyy_MM_dd);
}
});
}
private static List<String> toString(List<LocalDate> localDates, Function<LocalDate,String> function){
long start=System.currentTimeMillis();
List<String> s=new ArrayList<>(localDates.size());
for(var localDate:localDates){
s.add(function.apply(localDate));
}
long end=System.currentTimeMillis();
System.out.println("toString:"+(end-start));
return s;
}
我在自己的电脑上试了下,用第一种自定义的格式化,时间差不多是900-1100,后面那个官方的大概是1200-1600,中的来说可以快30%-50%.当然,官方的适应性更强