1. 基本概念
可以声明式方式处理数据集合的流
常用的操作有:过滤、映射、规约等
2.实用总结
2.1.创建
点击查看代码
| |
| List<String> list = Arrays.asList("a", "b", "c", "d", "e"); |
| Stream<String> stream = list.stream(); |
| stream.forEach(System.out::println); |

点击查看代码
| |
| String[] array = new String[]{"a", "b", "c", "d", "e"}; |
| Stream<String> stream = Arrays.stream(array); |
| stream.forEach(System.out::println); |

点击查看代码
| |
| Stream<String> stream = Stream.of("a", "b", "c", "d", "e"); |
| stream.forEach(System.out::println); |

点击查看代码
| |
| Stream.iterate(0, n -> n + 3).limit(10).forEach(System.out::println); |

2.2 常规操作
| public class StreamDemo { |
| static class Student { |
| private String name; |
| private int age; |
| |
| public String getName() { |
| return name; |
| } |
| |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| public int getAge() { |
| return age; |
| } |
| |
| public void setAge(int age) { |
| this.age = age; |
| } |
| @Override |
| public String toString() { |
| return "Student{" + |
| "name='" + name + '\'' + |
| ", age=" + age + |
| '}'; |
| } |
| } |
| private static List<Student> genStudents() { |
| List<Student> students = new ArrayList<>(); |
| for (int i = 0; i < 100; i++) { |
| Student student = new Student(); |
| student.setAge(i); |
| student.setName("name" + i); |
| students.add(student); |
| } |
| return students; |
| } |
| } |
| |
| |
| List<Student> students = genStudents(); |
| students.stream().filter(student -> student.getAge() > 30).forEach(System.out::println); |
-映射:map
| |
| List<Student> students = genStudents(); |
| |
| students.stream().filter(item->item.age>30).map(student -> { |
| student.setAge(student.getAge() + 10); |
| student.setName(student.getName() + "hello"); |
| return student; |
| }).forEach(System.out::println); |

| |
| List<Student> students = genStudents(); |
| |
| Integer ageSum = students.stream().map(Student::getAge).reduce(0, (a, b) -> a + b); |
| System.out.println(ageSum); |

| |
| List<Student> students = genStudents(); |
| students.stream().sorted((s1, s2) -> s2.age - s1.age).forEach(System.out::println); |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗