Nuevas características de Java8 (explicación detallada de la transmisión)

A continuación se resumen algunas características nuevas de uso común

/*filtro filtrado (T-> booleano)*/

List newlist = list.stream().filter(user -> user.getAge() > 20) .collect(Collectors.toList());

/*deduplicación distinta*/

Lista nueva lista = list.stream().distinct().collect(Collectors.toList());

/* clasificación ordenada */

List newlist = list.stream() .sorted(Comparator.comparingInt(User::getAge)).collect(Collectors.toList());

/*limit devuelve los primeros n elementos*/

Lista newlist = list.stream() .sorted(Comparator.comparingInt(User::getAge)).limit(2).collect(Collectors.toList());

/*skip elimina los primeros n elementos*/

List newlist = list.stream() .sorted(Comparator.comparingInt(User::getAge)).skip(2).collect(Collectors.toList());

/*mapa(T->R)*/

Lista newlist = list.stream() .map(User::getName).distinct().collect(Collectors.toList());

/*allMatch(T->booleano)

Compruebe si se cumplen todos los comportamientos de los parámetros */

bandera booleana = list.stream().allMatch(usuario -> usuario.getAge() >= 10);

/*cualquierCoincidencia(T->booleano)

Comprueba si algún elemento cumple la condición dada */

bandera booleana = list.stream() .anyMatch(user -> user.getAge() == 10);

/*noneMatchT->booleano)

Si hay un elemento en la secuencia que coincida con la T dada -> condición booleana */

bandera booleana = list.stream() .noneMatch(user -> user.getName().contains("张三李四"));

/*findFirst( ): encuentra el primer elemento*/

Opcional OptionalUser = list.stream() .sorted(Comparator.comparingInt(User::getAge)) .findFirst();

/*count() calcula el total*/

cuenta larga = list.stream().count();

/*valor maximo valor minimo*/

Opcional max = list.stream() .collect( Collectors.maxBy( Comparator.comparing(User::getAge) ) );

Opcional min = list.stream() .collect( Collectors.minBy( Comparator.comparing(User::getAge) ) );

/* suma_promedio */

int totalAge = list.stream() .collect(Collectors.summingInt(User::getAge));

double avgAge = list.stream() .collect(Collectors.averagingInt(User::getAge));

/*Obtener el número, la suma, el valor máximo y el valor mínimo de los elementos a la vez*/

IntSummaryStatistics estadísticas = list.stream() .collect(Collectors.summarizingInt(User::getAge));

/*Puntadas*/

String nombres = list.stream() .map(User::getName) .collect(Collectors.joining(", "));

/*grupo*/

Map> map1 = usuarios().stream() .collect(Collectors.groupingBy(User::getName));

Map>> map2 = usuarios().stream() .collect(Collectors.groupingBy(User::getName, Collectors.groupingBy(User::getAge)));

/* total del grupo */

Número de mapa = usuarios().stream() .collect(Collectors.groupingBy(User::getName, Collectors.counting()));

Mapa num2 = usuarios().stream() .filter(usuario -> usuario.getAge() >= 18) .collect(Collectors.groupingBy(User::getName, Collectors.counting()));

/*dividir*/

Mapa> parte = list.stream() .collect(Collectors.partitioningBy(usuario -> usuario.getAge()

package com.baobei.ademo;

import com.google.gson.Gson;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @author Chenyf
 * @date 2022/3/31 10:59
 */
public class Demo {
    public static void main(String[] args) {
        partitioningBy();
    }

    /*分区*/
    public static void partitioningBy() {
        List<User> list = users();
        Map<Boolean, List<User>> part = list.stream()
                .collect(Collectors.partitioningBy(user -> user.getAge() <= 20));
        System.out.println(new Gson().toJson(part));
    }

    /*分组合计*/
    public static void groupCount() {
        Map<String, Long> num = users().stream()
                .collect(Collectors.groupingBy(User::getName, Collectors.counting()));
        System.out.println(num);


        Map<String, Long> num2 = users().stream()
                .filter(user -> user.getAge() >= 18)
                .collect(Collectors.groupingBy(User::getName, Collectors.counting()));
        System.out.println(num2);
    }

    /*分组*/
    public static void group() {
        Map<Integer, List<User>> map = users().stream()
                .collect(Collectors.groupingBy(User::getAge));
        Map<String, List<User>> map1 = users().stream()
                .collect(Collectors.groupingBy(User::getName));
        System.out.println(new Gson().toJson(map));
        System.out.println();
        System.out.println(new Gson().toJson(map1));
        System.out.println();
        Map<String, Map<Integer, List<User>>> map2 = users().stream()
                .collect(Collectors.groupingBy(User::getName,
                        Collectors.groupingBy(User::getAge)));
        System.out.println(new Gson().toJson(map2));
    }

    /*拼接*/
    public static void join() {
        List<User> list = users();
        String names = list.stream()
                .map(User::getName)
                .collect(Collectors.joining(", "));
        System.out.println(names);
    }

    /*一次性得到元素的个数、总和、最大值、最小值*/
    public static void allVlaue() {
        List<User> list = users();
        IntSummaryStatistics statistics = list.stream()
                .collect(Collectors.summarizingInt(User::getAge));
        System.out.println(statistics);
    }

    /*求和_平均值*/
    public static void sum_avg() {
        List<User> list = users();
        int totalAge = list.stream()
                .collect(Collectors.summingInt(User::getAge));
        System.out.println("totalAge--> " + totalAge);
        double avgAge = list.stream()
                .collect(Collectors.averagingInt(User::getAge));
        System.out.println("avgAge--> " + avgAge);
    }

    /*最大值最小值*/
    public static void max_min() {
        List<User> list = users();
        Optional<User> max = list.stream()
                .collect(
                        Collectors.maxBy(
                                Comparator.comparing(User::getAge)
                        )
                );
        Optional<User> min = list.stream()
                .collect(
                        Collectors.minBy(
                                Comparator.comparing(User::getAge)
                        )
                );
        System.out.println("max--> " + max + "  min--> " + min);
    }

    /*count()计算总数*/
    public static void count() {
        List<User> list = users();
        long count = list.stream().count();
        System.out.println(count);
    }

    /*findFirst( ):找到第一个元素*/
    public static void findfirst() {
        List<User> list = users();
        Optional<User> optionalUser = list.stream()
                .sorted(Comparator.comparingInt(User::getAge))
                .findFirst();
        System.out.println(optionalUser.toString());
    }

    /*noneMatchT->boolean)流中是否有元素匹配给定的 T -> boolean条件*/
    public static void noneMatch() {
        List<User> list = users();
        boolean flag = list.stream()
                .noneMatch(user -> user.getName().contains("张三李四"));
        System.out.println(flag);
    }

    /*anyMatch(T->boolean)检测是否有任意元素满足给定的条件*/
    public static void anyMatch() {
        List<User> list = users();
        boolean flag = list.stream()
                .anyMatch(user -> user.getAge() == 10);
        System.out.println(flag);
    }

    /*allMatch(T->boolean)检测是否全部满足参数行为*/
    public static void allMatch() {
        List<User> list = users();
        boolean flag = list.stream()
                .allMatch(user -> user.getAge() >= 10);
        System.out.println(flag);
    }

    /*flatMap(T -> Stream<R>)*/
    public static void flatmap() {
        List<String> flatmap = new ArrayList<>();
        flatmap.add("常宣灵,常昊灵");
        flatmap.add("孟婆,判官红,判官蓝");
        /*
            这里原集合中的数据由逗号分割,使用split进行拆分后,得到的是Stream<String[]>,
            字符串数组组成的流,要使用flatMap的Arrays::stream
            将Stream<String[]>转为Stream<String>,然后把流相连接
        */
        flatmap = flatmap.stream()
                .map(s -> s.split(","))
                .flatMap(Arrays::stream)
                .collect(Collectors.toList());
        for (String name : flatmap) {
            System.out.println(name);
        }
    }

    /*map(T->R)*/
    public static void map() {
        List<User> list = users();
        List<String> newlist = list.stream()
                .map(User::getName).collect(Collectors.toList());
        for (String add : newlist) {
            System.out.println(add);
        }
    }

    /*skip去除前n个元素*/
    public static void skip() {
        List<User> list = users();
        List<User> newlist = list.stream()
                .sorted(Comparator.comparingInt(User::getAge))
                .skip(2)
                .collect(Collectors.toList());
        for (User user : newlist) {
            System.out.println(user.getName() + " --> " + user.getAge());
        }
    }

    /*limit返回前n个元素*/
    public static void limit() {
        List<User> list = users();
        List<User> newlist = list.stream()
                .sorted(Comparator.comparingInt(User::getAge))
                .limit(2)
                .collect(Collectors.toList());
        for (User user : newlist) {
            System.out.println(user.getName() + " --> " + user.getAge());
        }
    }

    /*sorted排序*/
    public static void sorted() {
        List<User> list = users();
        List<User> newlist = list.stream()
                .sorted(Comparator.comparingInt(User::getAge))
                .collect(Collectors.toList());
        for (User user : newlist) {
            System.out.println(user.getName() + " --> " + user.getAge());
        }
    }

    /*distinct 去重*/
    public static void distinct() {
        List<User> list = users();
        List<User> newlist = list.stream().distinct().collect(Collectors.toList());
        for (User user : newlist) {
            System.out.println(user.getName() + " --> " + user.getAge());
        }
    }

    /*filter过滤(T-> boolean)*/
    public static void filter() {
        List<User> list = users();
        List<User> newlist = list.stream().filter(user -> user.getAge() > 20)
                .collect(Collectors.toList());
        for (User user : newlist) {
            System.out.println(user.getName() + " --> " + user.getAge());
        }
    }

    public static List<User> users() {
        List<User> list = Arrays.asList(
                new User("张三", 20),
                new User("张三", 23),
                new User("张三", 20),
                new User("李四", 10),
                new User("王五", 30)
        );
        return list;
    }
}
package com.baobei.ademo;

import lombok.Data;

import java.math.BigDecimal;

/**
 * @author Chenyf
 * @date 2022/3/31 11:04
 */
@Data
public class User {
    //姓名
    private String name;
    //年龄
    private Integer age;


    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '\'' +
                '}';
    }
}


 

 

Supongo que te gusta

Origin blog.csdn.net/m0_57666466/article/details/123964589
Recomendado
Clasificación