Java-8-Consumer

Java-8-Consumer

interface Consumer

Consumer的作用顾名思义,是给定义一个参数,对其进行(消费)处理,处理的方式可以是任意操作

源码:

public interface Consumer<T> {

    
    //对给定的参数T执行定义的操作
    void accept(T t);

    //对给定的参数T执行定义的操作执行再继续执行after定义的操作
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}



简单例子

public class M1 {


    public static void main(String[] args) {

        Consumer<String> consumer1 = s -> System.out.println(s.length());

        consumer1.accept("abc");

        System.out.println("----------------------");

        Consumer<Integer> consumer2 = integer -> System.out.println(integer);

        consumer2.accept(4545);

        System.out.println("----------------------");

        Consumer<String> consumer3 = s -> System.out.println(s);

        Consumer<String> consumer4 = s -> System.out.println(s.toUpperCase());

        //先执行consumer3 再执行consumer4
        consumer3.andThen(consumer4).accept("jhdhhfdhuhhd");

        System.out.println("----------------------");


        Consumer<Integer> consumer5 = integer ->
        {
            if (integer > 50){
                System.out.println(integer);
            }
        };

        List<Integer> integers = Create_Data.supply_Integers();

        integers.stream()
                .forEach(consumer5);
        
        System.out.println("----------------------");

        List<Person> personList = Create_Data.supply_Persons();

        Consumer<Person> consumer6 = person ->
        {
            if (person.getAge() > 15) {
                System.out.println(person);
            }
        };

        personList.stream()
                .forEach(consumer6);


    }
}



针对特定类型

DoubleConsumer IntConsumer LongConsumer



public class M1 {


    public static void main(String[] args) {

        DoubleConsumer consumer1 = d -> System.out.println(d);

        consumer1.accept(454.002);

        System.out.println("-------------------------");

        IntConsumer consumer2 = i ->
        {
            if (i > 10){
                System.out.println(i);
            }
        };

        List<Integer> integers = Create_Data.supply_Integers();

        for (int i : integers){
            consumer2.accept(i);
        }

        System.out.println("-------------------------");

        LongConsumer consumer3 = l -> System.out.println(l);

        consumer3.accept(15L);



    }
}

ObjIntConsumer ObjDoubleConsumer ObjLongConsumer

例子:


public class M2 {


    public static void main(String[] args) {

        ObjIntConsumer<Person> personObjIntConsumer = (person,integer) ->
        {
            if (person.getAge() > integer){
                System.out.println(person);
            }
        };

        List<Person> personList = Create_Data.supply_Persons();

        for (Person person:personList){
            personObjIntConsumer.accept(person,55);
        }

    }
}

两个参数

BiConsumer<T, U>



public class M3 {


    public static void main(String[] args) {

        BiConsumer<String,Integer> biConsumer = (s,i) ->
        {

            if (s.length() > 2 && i > 60){
                System.out.println("OK");
            }

        };

        List<Person> personList = Create_Data.supply_Persons();

        for (Person person : personList){
            biConsumer.accept(person.getName(),person.getAge());
        }

        System.out.println("-----------------------");

        BiConsumer<Person,String> biConsumer2 = (p,s) ->
        {

            if (p.getOrigin().equals("Shanghai")){
                System.out.println(s);
            }
        };

        for (Person person : personList) {
            biConsumer2.accept(person,"来自上海的群众");
        }



    }
}


实现自己的Consumer


@FunctionalInterface
public interface MyConsumer<T,R,U> {

    void accept(T t,R r,U u);
}


public class M1{


    public static void main(String[] args) {

        MyConsumer<Person,Integer,String> myConsumer = (person,integer,string) ->
        {
            if (person.getAge() > integer) {
                System.out.println(string);
                System.out.println(person);
                System.out.println("");
            }
        };

        List<Person> personList = Create_Data.supply_Persons();

        for (Person person : personList) {
            myConsumer.accept(person,50,"年纪大于50的人");
        }

    }
}


发布了229 篇原创文章 · 获赞 62 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/Coder_py/article/details/104149210