欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Stream流简单使用

Stream流简单使用

2025/2/22 2:16:26 来源:https://blog.csdn.net/Zhuxiaoyu_91/article/details/145683876  浏览:    关键词:Stream流简单使用

Stream流简单使用

1 按指定字段获取集合对象中的字段

List<String> idList = initStudentList.stream().map(Student::getId).collect(Collectors.toList());

2 按指定字段对集合对象进行排序

List<Student> collect = initStudentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());

3 按指定字段对集合对象去重处理

List<Student> collect = initStudentList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(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;@Overridepublic 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.comparing(Student::getAge)).collect(Collectors.toList());setOut(collect);*/// 3 按指定字段对集合对象去重处理/*List<Student> collect = initStudentList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词