主页 > 手机  > 

Stream流简单使用

Stream流简单使用

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流简单使用