• 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. }

     

  • 相关阅读:
    python用pychart库,实现将经纬度信息在地图上显示
    太阳 & IT
    PyTorch学习(11):PyTorch的形状变换(view, reshape)与维度变换(transpose, permute)
    CSGO饰品持续跌价,市场真的要崩盘了吗?
    【Shell】shell脚本相关操作
    【玩儿】Win 11 安装安卓子系统
    【无标题】
    2004NOIP普及组真题 2. 花生采摘
    一条merge实现插入或更新
    【UE】在游戏运行时,通过选择uasset来生成静态网格体
  • 原文地址:https://blog.csdn.net/qq_46093575/article/details/132754348