Java8 中 Steam流的用法
Java8 新增的 Stream 流大大减轻了我们代码的工作量
1、初始化
package cn.open2ai.java;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Data
class User {
// id
private Integer id;
// 姓名
private String name;
// 年龄
private Integer age;
public User(int id,String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class DemoApp
{
public static void main( String[] args )
{
List<User> users = new ArrayList<>();
users.add(new User(1,"Tom", 18));
users.add(new User(2,"Jerry", 20));
users.add(new User(3,"Tom", 20));
// 1. 循环forEach
// 循环输出user对象
// users.stream().forEach(user -> System.out.println(user));
// // 2. 筛选name是Tom的用户
// users.stream()
// .filter(user -> "Tom".equals(user.name))
// .forEach(System.out::println); // 输出 {"age":1,"name":"Tom"}
// 3. 映射 map/flatMap
// 打印users里的name
users.stream().map(user -> user.getName()).forEach(System.out::println); // 输出 Tom Jerry
// 4. 生成新的list,包含ids
List<Integer> ids = users.stream().map(user -> user.getId()).collect(Collectors.toList());
ids.forEach(System.out::println);
}
}
2、遍历 forEach
// 循环输出user对象
users.stream().forEach(user -> System.out.println(user));
User{id=1, name='Tom', age=18}
User{id=2, name='Jerry', age=20}
3、筛选 filter
// 2. 筛选name是Tom的用户
users.stream()
.filter(user -> "Tom".equals(user.name))
.forEach(System.out::println); // 输出 {"age":1,"name":"Tom"}
User{id=1, name='Tom', age=18}
User{id=3, name='Tom', age=20}
4、生成新的list,包含ids
// 4. 生成新的list,包含ids
List<Object> ids = users.stream().map(user -> user.id).collect(Collectors.toList());
ids.forEach(System.out::println);
1
2
3
参考文档
- THE END -
最后修改:2024年11月10日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:http://www.open2ai.cn/29.html