Stream流简单使用
- 手机
- 2025-08-22 18:30:01

Stream流简单使用
1 按指定字段获取集合对象中的字段
List<String> idList = initStudentList.stream().map(Student::getId).collect(Collectors.toList());2 按指定字段对集合对象进行排序
List<Student> collect = initStudentList.stream().sorted(Comparator paring(Student::getAge)).collect(Collectors.toList());3 按指定字段对集合对象去重处理
List<Student> collect = initStudentList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(()->new TreeSet<>(Comparator paring(Student::getName))), ArrayList::new ));4 对集合对象批量处理
initStudentList.forEach((Student user) ->user.setName(user.getName()+"-123"));5 将集合对象中指定字段转数组
String[] strings = initStudentList.stream().map(Student::getId).toArray(String[]::new);代码如下
学生实体类
public class Student { private String id; private String name; private String sex; private int age; private Date birthday; @Override public String toString() { return "User{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + ", birthday=" + birthday + '}'; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }初始化集合数据
public static List<Student> initStudentList(){ List<Student> initStudentList = new ArrayList<>(); for (int i = 0; i < 10; i++) { Student Student = new Student(); Student.setId(String.valueOf(i*10)); Student.setName("名称"+i); Student.setAge(i+2*i); if (i%3!=0){ Student.setSex("男"); }else{ Student.setSex("女"); } Student.setBirthday(new Date(new Random().nextLong()*(369 - 258)*i)); initStudentList.add(Student); } // 设置重复名称用户 Student Student1 = new Student(); Student1.setId(String.valueOf(37)); Student1.setName("名称"+3); Student1.setAge(11); Student1.setSex("男"); Student1.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2)); initStudentList.add(Student1); Student Student2 = new Student(); Student2.setId(String.valueOf(58)); Student2.setName("名称"+5); Student2.setAge(17); Student2.setSex("女"); Student2.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2)); initStudentList.add(Student2); return initStudentList; }Test
public class StreamTest { public static void main(String[] args) { List<Student> initStudentList = initStudentList(); setOut(initStudentList); System.out.println("-----------------------------------"); // 流处理 // 1 按指定字段获取集合对象中的字段 /*List<String> idList = initStudentList.stream().map(Student::getId).collect(Collectors.toList()); System.out.println(idList);*/ // 2 按指定字段对集合对象进行排序 /*List<Student> collect = initStudentList.stream().sorted(Comparator paring(Student::getAge)).collect(Collectors.toList()); setOut(collect);*/ // 3 按指定字段对集合对象去重处理 /*List<Student> collect = initStudentList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(()->new TreeSet<>(Comparator paring(Student::getName))), ArrayList::new )); setOut(collect);*/ // 4 对集合对象批量处理 /*initStudentList.forEach((Student user) ->user.setName(user.getName()+"-123")); setOut(initStudentList);*/ // 5 将集合对象中指定字段转数组 /*String[] strings = initStudentList.stream().map(Student::getId).toArray(String[]::new); for (String string : strings) { System.out.println(string); }*/ } public static void setOut(List<Student> list){ for (Student student : list) { System.out.println(student); } } public static List<Student> initStudentList(){ List<Student> initStudentList = new ArrayList<>(); for (int i = 0; i < 10; i++) { Student Student = new Student(); Student.setId(String.valueOf(i*10)); Student.setName("名称"+i); Student.setAge(i+2*i); if (i%3!=0){ Student.setSex("男"); }else{ Student.setSex("女"); } Student.setBirthday(new Date(new Random().nextLong()*(369 - 258)*i)); initStudentList.add(Student); } // 设置重复名称用户 Student Student1 = new Student(); Student1.setId(String.valueOf(37)); Student1.setName("名称"+3); Student1.setAge(11); Student1.setSex("男"); Student1.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2)); initStudentList.add(Student1); Student Student2 = new Student(); Student2.setId(String.valueOf(58)); Student2.setName("名称"+5); Student2.setAge(17); Student2.setSex("女"); Student2.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2)); initStudentList.add(Student2); return initStudentList; } }结果截图1
结果截图2
结果截图3
结果截图4
结果截图5
Stream流简单使用由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Stream流简单使用”