• 集合元素处理(传统方式和Stream方式)


    1、集合元素处理(传统方式)

    • 现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行一下若干操作步骤:
    1. 第一个队伍只要 名字为 3 个字 的成员姓名;存储到一个新集合中。
    2. 第一个队伍筛选之后只要 前 3 个人;存储到一个新集合中。
    3. 第二个队伍只要姓 的成员姓名;存储到一个新集合中。
    4. 第二个队伍筛选之后 不要前 2 个人;存储到一个新集合中。
    5. 将两个队伍 合并 为一个队伍;存储到一个新集合中。
    6. 根据姓名创建Person对象;存储到一个新集合中。
    7. 打印整个队伍的Person对象信息。
    1. package com.csdn.streampractice;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. import java.util.ArrayList;
    6. import java.util.Collections;
    7. public class Traditional {
    8. public static void main(String[] args) {
    9. //第一支队伍
    10. ArrayList one = new ArrayList<>();
    11. Collections.addAll(one, "喜羊羊", "美羊羊", "懒洋洋", "灰太狼", "红太狼", "村长");
    12. //1.第一个队伍只要 名字为 3 个字 的成员姓名;存储到一个新集合中。
    13. ArrayList one1 = new ArrayList<>();
    14. for (String name : one) {
    15. if (name.length()==3) {
    16. one1.add(name);
    17. }
    18. }
    19. //2.第一个队伍筛选之后只要 前 3 个人;存储到一个新集合中。
    20. ArrayList one2 = new ArrayList<>();
    21. for (int i = 0; i < 3; i++) {
    22. one2.add(one1.get(i));
    23. }
    24. //第二支队伍
    25. ArrayList two = new ArrayList<>();
    26. Collections.addAll(two, "张三丰", "张翠山", "张无忌", "赵敏", "周芷若");
    27. //3.第二个队伍只要姓 张 的成员姓名;存储到一个新集合中。
    28. ArrayList two1 = new ArrayList<>();
    29. for (String name : two) {
    30. if (name.startsWith("张")) {
    31. two1.add(name);
    32. }
    33. }
    34. //4.第二个队伍筛选之后 不要前 2 个人;存储到一个新集合中。
    35. ArrayList two2 = new ArrayList<>();
    36. for (int i = 2; i
    37. two2.add(two1.get(i));
    38. }
    39. //5.将两个队伍 合并 为一个队伍;存储到一个新集合中。
    40. ArrayList concatenate = new ArrayList<>();
    41. concatenate.addAll(one2);
    42. concatenate.addAll(two2);
    43. //6.根据姓名创建Person对象;存储到一个新集合中。
    44. ArrayList list = new ArrayList<>();
    45. for (String name : concatenate) {
    46. list.add(new Person(name));
    47. }
    48. //7.打印整个队伍的Person对象信息。
    49. for (Person person : list) {
    50. System.out.println(person);
    51. }
    52. // Person(name=喜羊羊)
    53. // Person(name=美羊羊)
    54. // Person(name=懒洋洋)
    55. // Person(name=张无忌)
    56. }
    57. }
    58. @Data
    59. @NoArgsConstructor
    60. @AllArgsConstructor
    61. class Person {
    62. private String name;
    63. }

    2、集合元素处理(Stream方式) 

    1. package com.csdn.streampractice;
    2. import java.util.ArrayList;
    3. import java.util.Collections;
    4. import java.util.stream.Stream;
    5. public class DemoStreamNames {
    6. public static void main(String[] args) {
    7. //第一支队伍
    8. ArrayList one = new ArrayList<>();
    9. Collections.addAll(one, "喜羊羊", "美羊羊", "懒洋洋", "灰太狼", "红太狼", "村长");
    10. //1.第一个队伍只要 名字为 3 个字 的成员姓名;存储到一个新集合中。
    11. Stream stream = one.stream();
    12. Stream stringStream = stream.filter(name -> name.length() == 3);
    13. //2.第一个队伍筛选之后只要 前 3 个人;存储到一个新集合中。
    14. Stream limit = stringStream.limit(3);
    15. //第二支队伍
    16. ArrayList two = new ArrayList<>();
    17. Collections.addAll(two, "张三丰", "张翠山", "张无忌", "赵敏", "周芷若");
    18. //3.第二个队伍只要姓 张 的成员姓名;存储到一个新集合中。
    19. Stream stream1 = two.stream();
    20. Stream stringStream1 = stream1.filter(name -> name.startsWith("张"));
    21. //4.第二个队伍筛选之后 不要前 2 个人;存储到一个新集合中。
    22. Stream skip = stringStream1.skip(2);
    23. //5.将两个队伍 合并 为一个队伍;存储到一个新集合中。
    24. Stream concat = Stream.concat(limit, skip);
    25. //6.根据姓名创建Person对象;存储到一个新集合中。
    26. Stream personStream = concat.map(name -> new Person(name));
    27. //7.打印整个队伍的Person对象信息。
    28. personStream.forEach(System.out::println);
    29. // Person(name=喜羊羊)
    30. // Person(name=美羊羊)
    31. // Person(name=懒洋洋)
    32. // Person(name=张无忌)
    33. }
    34. }
    • 完全使用链式编程,lambda表达式和方法引用完成代码
    1. package com.csdn.streampractice;
    2. import java.util.ArrayList;
    3. import java.util.Collections;
    4. import java.util.stream.Stream;
    5. public class StreamUltimate {
    6. public static void main(String[] args) {
    7. ArrayList one = new ArrayList<>();
    8. Collections.addAll(one, "喜羊羊", "美羊羊", "懒洋洋", "灰太狼", "红太狼", "村长");
    9. Stream limit = one.stream().filter(name -> name.length() == 3).limit(3);
    10. ArrayList two = new ArrayList<>();
    11. Collections.addAll(two, "张三丰", "张翠山", "张无忌", "赵敏", "周芷若");
    12. Stream skip = two.stream().filter(name -> name.startsWith("张")).skip(2);
    13. Stream.concat(limit, skip).map(Person::new).forEach(System.out::println);
    14. // Person(name=喜羊羊)
    15. // Person(name=美羊羊)
    16. // Person(name=懒洋洋)
    17. // Person(name=张无忌)
    18. }
    19. }

  • 相关阅读:
    使用手机(网页)控制ESP32S3的LED亮灭
    MVVM项目开发(商品管理系统二)
    帅呆了!Kafka移除了Zookeeper!
    web前端期末大作业基于html+css+javascript+jquery制作家乡主题风景网页设计与实现——张家口
    个人电脑好用必备软件(使用过)
    信息系统项目管理师---第八章 项目质量管理
    如何使用Docker搭建ES集群
    Linux 命令【10】:curl
    vim、gcc/g++、make/Makefile、yum、gdb
    从0开始编写BP,附加动量因子的BP神经网络,不使用MATLAB工具箱,纯手写matlab代码,以BP分类为例...
  • 原文地址:https://blog.csdn.net/m0_65152767/article/details/133833335