java8 中的时间和数据的变化

时间:2021-09-03 23:41:23

  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

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