Strem流

生成Stream流

  1. //Collection
  2. List<String> list = new Arraylist<String>();
  3. list.stream();
  4. //Map
  5. Map<String,Object> map = new HashMap<String,Object>
  6. map.keySet().stream();
  7. map.values().stream();
  8. map.entrySet().stream();
  9. //数组
  10. Stream.of(数组)
  11. Stream.of("d","g","g","g","g")

中间操作

filter

List.stream().filter(s->s.length()==3);//Predicate函数式接口

limit

List.stream().limit(3);//获取前面多少个

skip

List.stream().skip(3);//跳过前面多少个

concat

Stream.concat(stream1,stream2);//合并两个Stream流

distinct

List.stream().distinct();//Stream流去重

sorted

List.stream().sorted();//无参按自然顺序排序 有参实现Comparator接口

map

List.stream().map(s -> _new _Actor(s));//Function函数式接口 返回给定函数结果组成的流

mapToInt

List.stream().mapToInt(Integer::parseInt);//返回一个IntStream其中包含给定函数结果组成的流
IntStream:表示原始int流

终结操作

forEach

List.stream().forEach(System.out::println);//Consumer函数式接口对此流的每个元素执行操作

count

List.stream().count();//返回此流中的元素数

收集操作

List.stream().collect(Collector collector)
Collector接口 有一个工具类 Collectors
public staticCollector toList():把元素收集到List集合中
public staticCollector toSet():把元素收集到Set集合中
public static Collector toMap(Function keyMapper,Function valueMapper):把元素收集到Map集合中

函数式接口

函数式接口注解标识:@FunctionalInterface

Supplier

Supplier:包含一个无参的方法
●T get():获得结果
●该方法不需要参数,它会按照某种实现逻辑(由Lambda表达式实现)返回一个数据
●Supplier接口也被称为生产型接口,如果我们指定了接口的泛型是什么类型,那么接口中的gt方法就会生产什么类型的数据供我们使用

Consumer

Consumer:包含两个方法
●void accept(T t):对给定的参数执行此操作
●default ConsumerandThen(Consumer after):返回一个组合的Consumer,依次执行此操作,然后执行afterj操作
●Consumer接口也被称为消费型接口,它消费的数据的数据类型由泛型指定

Predicate

Predicate:常用的四个方法
●boolean test(T t):对给定的参数进行判断(判逻辑由Lambda表达式实现),返回一个布尔值
●default Predicatenegate0:返回一个逻辑的否定,对应逻辑非
●default Predicateand(Predicate other):返回一个组合判断,对应短路与
●default Predicateor(Predicate other):返回一个组合判断,对应短路或
●Predicate接口通常用于判断参数是否满足指定的条件

Function

Function:常用的两个方法
●R apply(T t):将此函数应用于给定的参数
●defaultFunction andThen(Function after);返回一个组合函数,首先将该函数应用于输入,然后将after函数应用于结果
●Function接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值