标签:equal foreach 间隔 距离 group 断言 截断 iter lis
lambda四大内置核心函数式接口:
Consumer<T> :消费性接口
void accept(T t);
Suppiler<T>:供给性接口
T get();
Function<T,R>:函数型接口
R apply(T t);
Predicate<T> :断言型接口
boolean test(T t);
时间和日期得处理:
1.LocalDate LocalTime localDateTime
得到当前得时间
2、Instant
时间戳偏移量距离我们得时间是8,获取得是UTC时区
3、Duration
计算俩个时间之间得间隔
4、Period
计算俩个日期之间得间隔
流的操作(Stream)
流得三个步骤:
建立流:
建立方式:
数组得话用Arrarys.asList作为list或者直接用
Arrays.stream(employees)
,然后变成集合用.stream().如果是集合得话直接用.stream();
//通过Collection系列提供Stream 和里面的.stream方法 List<String > strings=new ArrayList<>(); Stream<String> stringStream=strings.stream(); //通过Arrarys里面的静态方法stream Employee[] employees=new Employee[10]; Stream<Employee> employees1= Arrays.stream(employees); //通过Stream中的of方法 Stream<String > stringStream1=Stream.of("dsag","gfdgfh","uerbg"); //创建无限流 Stream<Integer> stream=Stream.iterate(2,(x)->x+2); stream.limit(10).forEach(System.out::println);
中间操作:
筛选与切片:
filter:接受lambda,从流中排除某些元素;
limit:截断流,使其元素不超过给定数量
skip(n)跳过元素,返回一个扔掉了前n个元素得流。若流中元素不足n个,则返回一个空流,与limit(n)互补;
distinct :筛选,通过流所生成得元素得hashCode和equals去除重复元素。
map :映射,接受lambda,将元素转化成其他形式或者提取信息,接受一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素;(用map把要的项提取出来,不是过滤,过滤不会提取某一项出来)
flatMap: 接受一个函数作为参数,将每个值都换成另一个流,然后将所有流连接成一个流;
sort() 自然排序
sort(Comparator com)--定制排序.
(中间操作得话返回得式一个流,但是没有)
终止操作:
reduce():归约,reduce(T identity,BinaryOperator)/reduce(BinaryOperator)可以将流中元素反复结合起来,得到一个值。reduce(Double::sum)
collect():收集,将流转化为其他形式,接受一个Collector接口得实现,用于给Stream中元素做汇总得方法。
Collectors.求和得、平均数得、最大值,最小值、总数得,转换成list得,转化成map得。都有对应得方法。.foreach对其中得每一个进行操作。
groupingBy: 分组,一个参数就是分组,俩个参数,第二个参数是进一步分组。
然后Collectors.summarzingdouble/int()这个用变量接了之后又求求和得、平均数得、最大值,最小值、总数得方法在。
Collectors.joining: 连接
标签:equal foreach 间隔 距离 group 断言 截断 iter lis
原文地址:https://www.cnblogs.com/chenjiaolong/p/13748588.html