• java8-17 --- Stream流


     一、StreamAPI实例化

    1. /**
    2. * 通过集合创建Stream流
    3. */
    4. @Test
    5. public void test1(){
    6. ArrayList arrayList = new ArrayList<>();
    7. //返回一个顺序流
    8. Stream stream = arrayList.stream();
    9. //返回一个并行流
    10. Stream integerStream = arrayList.parallelStream();
    11. System.out.println(stream);
    12. System.out.println(integerStream);
    13. }
    14. /**
    15. * 通过数组创建Stream流
    16. */
    17. @Test
    18. public void test2(){
    19. //返回一个流
    20. Integer[] arr = {1,2,3,4};
    21. Stream stream = Arrays.stream(arr);
    22. }
    23. /**
    24. * 通过of()创建Stream流
    25. */
    26. @Test
    27. public void test3(){
    28. Stream stream = Stream.of("aa", "bb", "cc", "dd");
    29. }

    二、StreamAPI中间操作

    1. /**
    2. * 筛选与切片
    3. */
    4. @Test
    5. public void test4(){
    6. //接收lambda从流中排除某些元素
    7. ArrayList arrayList = new ArrayList<>();
    8. for (int i = 1; i <= 10 ; i++) {
    9. arrayList.add(i);
    10. }
    11. //filter()过滤操作
    12. arrayList.stream().filter(integer -> integer > 5).forEach(System.out :: println);
    13. //limit() --- 截断流,使其元素不超过给定数量
    14. arrayList.stream().limit(2).forEach(System.out :: println);
    15. //skip() --- 跳过元素,返回一个扔掉了前n个元素
    16. arrayList.stream().skip(5).forEach(System.out :: println);
    17. //distinct() --- 筛选,通过流所生成元素的hashCode() 和 equals() 去除重复元素
    18. arrayList.add(5);
    19. arrayList.add(6);
    20. arrayList.add(8);
    21. arrayList.stream().distinct().forEach(System.out :: println);
    22. }
    23. /**
    24. * 映射
    25. */
    26. @Test
    27. public void test5(){
    28. //map() --- 接收一个函数作为参数
    29. List list = Arrays.asList("aa", "bb", "cc");
    30. list.stream().map(str -> str.toUpperCase()).forEach(System.out :: println);
    31. }
    32. /**
    33. * 排序
    34. */
    35. @Test
    36. public void test6(){
    37. //sorted() --- 自然排序
    38. List list = Arrays.asList(12, 23, 1, 56, 23);
    39. list.stream().sorted().forEach(System.out :: println);
    40. //定制排序
    41. list.stream().sorted((o1, o2) -> o1 - o2).forEach(System.out :: println);
    42. }

     三、终止操作

    1. @Test
    2. public void test7(){
    3. //allMatch() --- 检查所有元素是否匹配
    4. List list = Arrays.asList(12, 34, 1, 45);
    5. System.out.println(list.stream().allMatch(Integer -> Integer > 12));
    6. //anyMatch() --- 检查是否至少匹配一个元素
    7. System.out.println(list.stream().anyMatch(Integer -> Integer > 23));
    8. //findFirst() --- 返回第一个元素
    9. System.out.println(list.stream().findFirst().get());
    10. //count() --- 返回流中元素的总个数
    11. System.out.println(list.stream().count());
    12. //max() --- 返回流中最大值
    13. System.out.println(list.stream().max((o1, o2) -> Integer.compare(o1, o2)).get());
    14. //min() --- 返回流中最小值
    15. System.out.println(list.stream().min((o1, o2) -> Integer.compare(o1, o2)).get());
    16. //forEach() --- 遍历集合
    17. list.forEach(integer -> {
    18. System.out.println(integer);
    19. });
    20. //reduce() --- 将流中元素反复结合起来,得到一个值
    21. System.out.println(list.stream().reduce(0, (o1, o2) -> o1 + o2));
    22. //
    23. List collect = list.stream().filter(Integer -> Integer > 23).collect(Collectors.toList());
    24. collect.forEach(a ->{
    25. System.out.println(a);
    26. });
    27. }

     

  • 相关阅读:
    AC笔记 | 领扣Java容器脚手架
    xavier china server
    docker 方式安装mysql 主从方式keepalived实现高可用
    RT-DETR代码学习笔记(DETRs Beat YOLOs on Real-time Object Detection)
    基于51单片机的红外遥控器设计
    R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用fill_palette函数改变可视化图像的填充色
    隧道未来如何发展?路网全息感知,颠覆公路交通安全史
    产品帮助中心必备的6大常规功能,你知道几个?
    源码编译perl5遇到的问题汇总
    面向对象的封装、继承、多态
  • 原文地址:https://blog.csdn.net/qq_46093575/article/details/132754348