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