Streaming API

- 日理万妓 2023-01-02 12:30 173阅读 0赞

Streaming API

概述:

Stream是jdk8增加的一个接口,该接口提供了一些对容器数据进行操作的规则,有了这些规则 就可以不通过遍历容器就可以以完成对相关数据的操作处理。

理解:

Stream可以理解为像生产流水线,操作只能往前走不能回退,经过一道工序操作的数据就会发 生变化上一道工序的对象就消失不可再次使用

作用:

不用遍历容器下对容器数据进行操作

注意:

Stream虽然可以操作数据但是本身不能够存储任何数据

Steam对象的获取:

1、Collection的Stream获取

集合中提供了方法:

stream():

返回一个集合对应的Stream流对象

2、Map的Stream的获取

不能直接获取Stream对象,只能变为单列集合再去获取对应的stream对象

keySet:

获取所有key的set集合

entrySet:

获取所有键值对对象的set集合

values:

获取所有value的collection集合

单列集合调用stream方法获取对应的stream对象

3、数组的Stream获取:

使用Stream接口的静态方法:of(T t)

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.HashMap;
  4. import java.util.Map.Entry;
  5. import java.util.Set;
  6. import java.util.stream.Stream;
  7. public class StreamDemo {
  8. public static void main(String[] args) {
  9. //创建集合
  10. ArrayList<String> list = new ArrayList<String>();
  11. //获取stream对象
  12. Stream<String> stream = list.stream();
  13. //创建双列集合
  14. HashMap<Integer, String> map = new HashMap<Integer, String>();
  15. //添加集合数据
  16. map.put(1, "张三");
  17. map.put(2, "李四");
  18. map.put(3, "王五");
  19. //获取所有key的set集合
  20. Set<Integer> ks = map.keySet();
  21. //获取所有键值对对象的set集合
  22. Set<Entry<Integer, String>> es = map.entrySet();
  23. //获取所有value的collection集合
  24. Collection<String> values = map.values();
  25. System.out.println(ks);
  26. System.out.println(es);
  27. System.out.println(values);
  28. int[] arr = {
  29. 10,20,30,40,50};
  30. Stream<int[]> stream2 = Stream.of(arr);
  31. }
  32. }

Stream的功能

Stream filter(Predicate p):

按照指定的条件对stream中数据进行过滤【满足保留】

Stream limit(int num):

只获取Stream中前num个元素

Stream skip(int num):

跳过前num个数据获取之后的数据

Stream map(Function f):

映射功能【把Stream中的数据映射为另一种数据】

Stream concat(Stream s1,Stream s2):

这是一个静态方法
拼接两个stream流为一个stream流

toArray():

把stream流中的数据收集到数组中

collect(Collector c):

把stream流中的数据收集到指定的集合中
Collector :参数的类型 是一个接口获取可以通过工具类Collectors的方法获取
常用:
获取List集合:Collectors.toList()
获取Set集合: Collectors.toSet()

forEach(Consumer c):

用来使用stream流中的数据的

int count():

返回stream流中元素的个数

代码示例:

  1. import java.util.Arrays;
  2. import java.util.List;
  3. import java.util.Set;
  4. import java.util.stream.Collector;
  5. import java.util.stream.Collectors;
  6. import java.util.stream.Stream;
  7. public class StreamMethod {
  8. public static void main(String[] args) {
  9. String[] arr = {
  10. "菊花","露水","百合花","玫瑰红","牡丹","百合","玫瑰","牡丹绿"};
  11. Stream<String> stream2 = Stream.of(arr);
  12. // 过滤
  13. Stream<String> stream3 = stream2.filter((t)->{
  14. return t.length() == 2;});
  15. // 循环消费
  16. //stream3.forEach(System.out :: println);
  17. Stream<String> stream4 = stream3.limit(4);
  18. //stream4.forEach(System.out :: println);
  19. Stream<String> stream5 = stream4.skip(2);
  20. // stream5.forEach(System.out :: println);
  21. //Stream<char[]> stream6 = stream5.map((r)->{return r.toCharArray();});
  22. Stream<byte[]> stream6 = stream5.map((r)->{
  23. return r.getBytes();});
  24. stream6.forEach(System.out :: println);
  25. System.out.println("=================");
  26. Stream<String> of = Stream.of(arr);
  27. Stream<String> of2 = Stream.of(arr);
  28. Stream<String> concat = Stream.concat(of, of2);
  29. // concat.forEach(System.out :: println);
  30. // System.out.println(concat.count());// 16
  31. // 把Stream流变为数组
  32. // Object[] array = concat.toArray();
  33. // System.out.println(Arrays.toString(array));
  34. // 把Stream流变为集合
  35. // List<String> list = concat.collect(Collectors.toList());
  36. // System.out.println(list);
  37. Set<String> set = concat.collect(Collectors.toSet());
  38. System.out.println(set);
  39. }
  40. }

方法总结

延迟方法:返回值类型还是Stream类型的方法就是延迟方法

filter limit skip map concat

终结方法:返回值不是Stream类型是其他的数据类型是终结方法

count toArray collect forEach

发表评论

表情:
评论列表 (有 0 条评论,173人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Streaming API

    Streaming API 概述: Stream是jdk8增加的一个接口,该接口提供了一些对容器数据进行操作的规则,有了这些规则 就可以不通过遍历容器就可以以完成对

    相关 Stream API

    Stream API 首先要理解Stream的概念,说实话这点确实非常的不好理解,尤其是Java IO也有Stream的概念,所以很容易导致混淆.

    相关 Stream API

    以前对集合中元素进行操作的时候需要一个一个遍历的去做,找出符合条件的数据,这样做真的不要太繁琐= =。 sql中却有很强的筛选信息的能力,而且也可以返回你想要的结果。 借鉴