Uma coleção completa de métodos comuns de Stream

Índice

prefácio

1. paraCada travessia

2. filtro de filtro

3. desduplicação distinta

4. limitar a interceptação

5. pular pular

6. classificar classificado

7. Valor máximo máximo, mínimo

8. As estatísticas reduzem

9. Converter estrutura de lista em estrutura de mapa

10. Listar objeto para listar

11. Listar objeto para Listar

Resumir


prefácio

Depois de me formar e entrar no mercado de trabalho, comecei a ter contato com a Stream, achei muito conveniente, gravei o método da Stream da forma mais completa possível.

1. paraCada travessia


        forEach: Este método recebe uma função da interface Consumer, e entrega cada elemento de stream para a função para processamento.
        forEach method: usado para percorrer os dados no stream.
        Nota: É um método final. Após a travessia, outros métodos no stream Stream não pode ser chamado

public class Stream_ForEach {
    public static void main(String[] args) {
    //获取一个Stream流
    Stream<String>stream= Stream.of("张三","李四","王五","赵六");
        //使用Stream流的方法forEach对stream流中的数据遍历
        stream.forEach((String name)->{
            System.out.println(name);
        });
    }
}

2. filtro de filtro

        filtro: usado para filtrar os dados no Stream stream
        filter(Predicate<? super T>predicate)
        O parâmetro Predicate do método de filtro é uma interface funcional, e o         teste booleano do método abstrato (T t)
        na expressão lambda Predicate pode ser usado

public class Stream_filter {
    public static void main(String[] args) {
        //创建一个Stream流
        Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六1", "刘老七");

        //单条件过滤
        Stream<String> stream1 = stream.filter((String name) -> {
            return name.startsWith("刘");
        });

        //多条件过滤
        List<String> stream2 = stream.filter((String name) -> {
            if(name.length()>=3 && name.equals("刘老七")){
                return true;
            }
                return false;
        }).collect(Collectors.toList);

        //遍历stream1
        stream1.forEach((name)-> System.out.println(name));
        
        //输出stream2
        System.out.println(stream2)
        
    }
}

3. desduplicação distinta

public class Stream_distinct {
    public static void main(String[] args) {
        //创建一个Stream流
        Stream<String> stream = Stream.of("张三", "张三","张三","李四", "王五", "赵六1", "刘老七");
        //去重
        List<String> stream1 = stream().distinct().collect(Collectors.toList());
        //输出stream1
        System.out.println(stream1)
    }
}

4. limitar a interceptação

        limit: usado para interceptar os elementos no stream
        limit pode interceptar o stream, apenas o primeiro n
        limit (long maxSize);
        o parâmetro é do tipo long, se o comprimento atual do conjunto for maior que o parâmetro, ele será interceptado , caso contrário, nenhuma operação será executada.
        limit é um método Delay, você pode continuar a usar o método Stream

public class Stream_limit {
    public static void main(String[] args) {
        //创建一个Stream流
        Stream<String> stream = Stream.of("张三", "张三","张三","李四", "王五", "赵六1", "刘老七");
        //去重
        List<String> list = stream().distinct().collect(Collectors.toList());
        //截取去重后的前2个元素
        list = list.stream().limit(2).collect(Collectors.toList();
        //输出stream1
        System.out.println(list)
    }
}

5. pular pular

        método skip: usado para pular elementos
        skip(long n)
        Se o comprimento atual do fluxo for maior que n, pule o primeiro n, caso contrário, um fluxo vazio com comprimento 0 será obtido

public class Stream_skip {
    public static void main(String[] args) {
        //创建一个Stream流
        Stream<String> stream = Stream.of("张三", "张三","张三","李四", "王五", "赵六1", "刘老七");
        //去重
        List<String> list = stream().distinct().collect(Collectors.toList());
        //跳过去重后的前2个元素
        list = list.stream().skip(2).collect(Collectors.toList());
        //输出stream1
        System.out.println(list)
    }
}

6. classificar classificado

public class Stream_sorted {
    public static void main(String[] args) {
        List<Test> list = new ArrayList<>();
        list.add(new Test("张三",23,new BigDecimal("3000"),new BigDecimal("1.1")));
        list.add(new Test("李四",24,new BigDecimal("2800"),new BigDecimal("1.2")));
        list.add(new Test("王五",22,new BigDecimal("3200"),new BigDecimal("1.3")));

        //根据年龄从大到小排序
        list = list.stream()
                   .sorted(Comparator.comparing(Test::getAge).reversed())
                   .collect(Collectors.toList());
        list.forEach(System.out::println);


    }
}

7. Valor máximo máximo, mínimo

public class Stream_max_min {
    public static void main(String[] args) {
        List<Test> list = new ArrayList<>();
        list.add(new Test("张三",23,new BigDecimal("3000"),new BigDecimal("1.1")));
        list.add(new Test("李四",24,new BigDecimal("2800"),new BigDecimal("1.2")));
        list.add(new Test("王五",22,new BigDecimal("3200"),new BigDecimal("1.3")));
        
        //获取年龄最大的人
        Test maxPeople = list.stream().max(Comparator.companing(Test::getAge)).get();
      
        //获取年龄最小的人
        Test minPeople = list.stream().min(Comparator.companing(Test::getAge)).get();

    }
}

8. As estatísticas reduzem

public class Stream_reduce {
    public static void main(String[] args) {
        List<Test> testList = new ArrayList<Test>();
        testList.add(new Test("小明",23,new BigDecimal("3000"),new BigDecimal("1.1")));
        testList.add(new Test("小红",24,new BigDecimal("2800"),new BigDecimal("1.2")));
        testList.add(new Test("小兰",22,new BigDecimal("3200"),new BigDecimal("1.3")));

        //统计年龄总和
        int totalAge =testList.stream().mapToInt(Test::getAge).sum();

        //统计工资总和
        BigDecimal totalSalary = testList.stream().map(Test::getSalary)

        //统计工资乘以各自系数的总和(向上保留两位)
        BigDecimal totalRatioSalary = testList.stream()
                                              .map(s->s.getSalary()
                                              .multiply(s.getRatio())
                                              .setScale(2,BigDecimal.ROUND_HALF_UP))
                                              .reduce(BigDecimal.ZERO,BigDecimal::add);
    }
}

9. Converter estrutura de lista em estrutura de mapa

public class Stream_List_Map {
    public static void main(String[] args) {
        List<Test> testList = new ArrayList<Test>();
        testList.add(new Test("张三",23,new BigDecimal("3000"),new BigDecimal("1.1")));
        testList.add(new Test("李四",24,new BigDecimal("2800"),new BigDecimal("1.2")));
        testList.add(new Test("王五",22,new BigDecimal("3200"),new BigDecimal("1.3")));
        //根据姓名转map,map的key为name
        Map<String, Test> nameMap= testList.stream().collect(Collectors.toMap(Test::getName, Test -> Test);
        System.out.println(map);
    }
}

10. Converter List<Object> em List<String>


public class Stream_object_string {
    public static void main(String[] args) {
        List<Test> testList = new ArrayList<Test>();
        testList.add(new Test("张三",23,new BigDecimal("3000"),new BigDecimal("1.1")));
        testList.add(new Test("李四",24,new BigDecimal("2800"),new BigDecimal("1.2")));
        testList.add(new Test("王五",22,new BigDecimal("3200"),new BigDecimal("1.3")));
        //获取姓名集合
        List<String> nameList = testList.stream().map(Test::getName()).collect(Collectors.toList());
        System.out.println("value:"+nameList);
    }
}

11. Objeto List<Object> para List<Object>

public class Stream_object_object {
    public static void main(String[] args) {
        List<People> peopleList = new ArrayList<People>();
        peopleList.add(new People("张三",23,new BigDecimal("3000"),new BigDecimal("1.1")));
        peopleList.add(new People("李四",24,new BigDecimal("2800"),new BigDecimal("1.2")));
        peopleList.add(new People("王五",22,new BigDecimal("3200"),new BigDecimal("1.3")));
        //对象转对象
        List<Student> studentList = peopleList.stream().map(s->{
            return new Student(s.getName(),s.getAge());
        }).collect(Collectors.toList());
        System.out.println("value:"+studentList);
    }
}

Resumir

um pouco

Acho que você gosta

Origin blog.csdn.net/weixin_52317961/article/details/128117727
Recomendado
Clasificación