Uso de flujo en Java

Clase de prueba, TODO es lo que tenemos que hacer, el código se implementa en los siguientes puntos

package com.company;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;

public class testStreamFilter {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<Student>(5) {
   
   {
            add(new Student("张三", 22, "男"));
            add(new Student("李四", 19, "女"));
            add(new Student("王五", 34, "男"));
            add(new Student("赵六", 30, "男"));
            add(new Student("田七", 25, "女"));
        }};
		// TODO
      }
}

class Student {
    private String name;
    private int age;
    private String sex;

    public Student(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    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;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

1 filtro filtro

  //过滤集合
        List<Student> filterList = list.stream().filter(student -> student.getAge() == 22).collect(Collectors.toList());

2 orden ascendente después de la comparación

        //排序 
        //升序 这种写法只能按照字符串进行排序
        List<Student> sortOneList = list.stream().sorted(Comparator.comparing(student -> student.getName())).collect(Collectors.toList());
        System.out.println("sortOneList = " + sortOneList);
        //升序 这种写法按照实体取属性的方式排序
        List<Student> sortTwoList = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
        System.out.println("sortTwoList = " + sortTwoList);

3 El orden descendente
es en realidad usar la función inversa para descender el atributo.

     List<Student> reversedList = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());
        System.out.println("reversedList = " + reversedList);

4 Deduplicación distinta
1 Deduplicación de entidad basada en atributos

    //去重
        List<Student> distinctList = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.getName()))), ArrayList::new));
        System.out.println("distinctList = " + distinctList);

Si se requieren dos campos, use el siguiente método

 //实体中的对象去重
        List<Student> distinctList = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.getName()+";"+o.getAge()))), ArrayList::new));
        System.out.println("distinctList = " + distinctList);

Deduplicación de colección de 2 cadenas

List unique = list.stream().distinct().collect(Collectors.toList());

5 Saltar los primeros elementos

 //跳过前面的5个元素
 List result2 = list.stream().skip(5).collect(Collectors.toList());
 System.out.println(result2);

6 Siempre que los primeros 5 elementos

//只要前面的5个
 List result3 = list.stream().limit(5).collect(Collectors.toList());
 System.out.println(result3);

7 En las propiedades del objeto, aumente el valor

        List<Integer> addList = list.stream().map(student -> student.getAge() + 1).collect(Collectors.toList());
        System.out.println("addList = " + addList);

8 recorrer para obtener el valor del atributo en el objeto

        List<String> nameList = list.stream().map(student -> student.getName()).collect(Collectors.toList());
        System.out.println("nameList = " + nameList);

9 Use flatMap para aplanar datos

        //flatMap扁平化
        String[] words = {"Hello", "World"};
        //{H,e,l,l,o}, {W,o,r,l,d}
        List<String> result3 = Arrays.stream(words).map(w -> w.split("")).flatMap(Arrays::stream).distinct().collect(Collectors.toList());
        System.out.println(result3);

10 Convertir los objetos de la colección a la estructura Map

        //结合中的对象转为Map结构
        Map<Integer, Student> studentMap = list.stream().collect(Collectors.toMap(Student::getAge, item -> item, (a, b) -> b));
        System.out.println("studentMap = " + studentMap);

11 Toma los atributos de la colección y únelos

        //集合中属性按照逗号拼接
        String nameJoinList = list.stream().map(student -> student.getName()).collect(Collectors.joining(","));
        System.out.println("nameJoinList = " + nameJoinList);

Supongo que te gusta

Origin blog.csdn.net/myhAini/article/details/115631681
Recomendado
Clasificación