java8 中的时间和数据的变化

时间:2024-07-05 22:07:02

  java8除了lambda表达式之外还对时间和数组这两块常用API做想应调整,

Stream 有几个常用函数:

store 排序 (a,b)-> a.compareTo(b)  排出来的结果是正序,从小到大 如果(a,b)->b.compareTo(a) 排出来的结果是从大到小

filter 拦截,过滤.根据条件过滤

forEeach 迭代每个元素

map 变更或者替换

limit 长度或者符合数量的限制

skip 跳到某个开始点,skip和limit组合可以制造分页的效果

sum ,count是常规聚合参数

distinct 去除重复数据,这里的去重比较是两个对象是否相等 object.equal(object).不能实现根据某个字段属性进行去重.当然单纯根据属性去重也不符合正常逻辑

ps:这些组合所需循环是一次的,很高效

java8中日期时间的API

     //java8 时间API的更新
Clock clock=Clock.systemUTC();
System.out.println(clock.millis());
//时间线 Instant
Instant instant =Instant.now();
Thread.sleep(1000);
Instant end = Instant.now();
//时间间隔 duration
Duration duration=Duration.between(instant, end);
System.out.println("this time :"+duration.toMillis());
//本地日期 没有时分秒的
LocalDate localDate= LocalDate.now();
      //TemporalAjusters 时间运算
LocalDate localDate1= localDate.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY));
System.out.println(localDate1);
//自定义日期矫正器 利用plus*方法可以很方便对时间进行运行 TemporalAdjuster Next_WorkDay = w -> {//自定义校正器
LocalDate resultDate = (LocalDate) w;
do {
resultDate = resultDate.plusMonths(1).plusDays(-1);
} while (resultDate.getDayOfWeek().getValue() >= 6);
return resultDate;
}; LocalDate localDate2 =localDate1.with(Next_WorkDay);
System.out.println("下个月的时间"+localDate2);
//时间格式,关键是本地时间!!用有时分秒的
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("time type:"+DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(
localDateTime));// 语言相关格式 时间格式转换也封装比较好了 System.out.println("time type:"+DateTimeFormatter.ofPattern("yyyy/mm/dd hh").format(
localDateTime));