美文网首页
JAVA8-lambda表达式

JAVA8-lambda表达式

作者: C_99f1 | 来源:发表于2018-11-11 17:55 被阅读16次

1.(Person p) -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25

  1. Predicate<Person> tester
  1. p -> p.printPerson() 指向方法
package org.apache.dubbo.demo.consumer;

import com.alibaba.fastjson.JSON;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;

/**
 * Created by cr on 2018/11/11.
 */
public class Person {
    public enum Sex {
        MALE, FEMALE
    }
    public Person(String name,int  age){
        this.name=name;
        this.age=age;
    }
  int age;
    String name;
    LocalDate birthday;
    Sex gender;
    String emailAddress;

    public int getAge() {
        return  this.age;
    }    private String getEmailAddress() {
        return  this.emailAddress;
    }

    public void printPerson() {
        System.out.println(JSON.toJSONString(this));
    }


        public static void printPersons(
                List<Person> roster, Predicate<Person> tester) {
            for (Person p : roster) {
                if (tester.test(p)) {
                    p.printPerson();
                }
            }
        }



    public static void processPersons(
            List<Person> roster,
            Predicate<Person> tester,
            Consumer<Person> block) {
        for (Person p : roster) {
            if (tester.test(p)) {
                block.accept(p);
            }
        }
    }

    public static void processPersonsWithFunction(
            List<Person> roster,
            Predicate<Person> tester,
            Function<Person, String> mapper,
            Consumer<String> block) {
        for (Person p : roster) {
            if (tester.test(p)) {
                String data = mapper.apply(p);
                block.accept(data);
            }
        }
    }


    public static <Z, Y> void processElements(
            Iterable<Z> source,
            Predicate<Z> tester,
            Function <Z, Y> mapper,
            Consumer<Y> block) {
        for (Z p : source) {
            if (tester.test(p)) {
                Y data = mapper.apply(p);
                block.accept(data);
            }
        }
    }






    public static void main(String[] args) {
        Person a=new Person("aaa",4);
        Person b=new Person("1",5);
        Person c=new Person("a2aa",6);
        Person d=new Person("a3aa",6);
        List<Person> roster= new ArrayList<>();
        roster.add(a);roster.add( b);roster.add(c);roster.add(d);
        Person.printPersons(roster,  (Person p) -> p.getAge() >= 1
                && p.getAge() <= 4);


        Person.processPersons(roster,(Person p) -> p.getAge() >= 1
                && p.getAge() <= 4,  p -> p.printPerson());


        Person.processPersonsWithFunction(
                roster,
                p -> p.getAge() >= 1
                        && p.getAge() <= 4,
                p -> p.getEmailAddress(),
                email -> System.out.println(email)
        );



        roster.stream() .filter(
                        p ->  p.getAge() >= 1
                                && p.getAge() <= 4).map(p -> p.getEmailAddress())
                .forEach(email1 -> System.out.println(email1));
        
          
    }


}

相关文章

  • Java8-Lambda

    Java8-Lambda Java 8 的最大变化是引入了 Lambda 表达式——一种紧凑的、传递行为的方式 引...

  • java8-lambda表达式

    为什么要使用java8: Java 几个重大版本 :Java 从 1995 年发布到现在,也走过 18 年了,个人...

  • Java8-Lambda表达式

    Lambda 表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambd...

  • Java8-Lambda表达式

    Lambda表达式,它可以很简洁地表示一个行为或传递代码,现在你可以把Lambda表达式看作匿名功能,它基本上就是...

  • Java8-Lambda表达式

    什么是Lambda表达式 Lambda可以理解为是一个匿名函数,Lambda表达式可以说是一段可以传递的代码。可以...

  • JAVA8-lambda表达式

    1.(Person p) -> p.getGender() == Person.Sex.MALE && p.get...

  • Java8-lambda表达式

    匿名接口方法 方法引用 集合排序与遍历 匿名排序比较 系统内置的一些函数式接口 闭包中使用的变量变final修饰的...

  • java8-Lambda表达式

    Lambda表达式可以理解为匿名函数的一种方式:匿名 -- 说匿名,是因为它不像普通的方法那样有一个明确的方法名称...

  • java8-lambda表达式

    Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,...

  • Java8-lambda表达式.md

    Lambda 表达式详解 函数式编程 函数式接口(functional interface 也叫功能性接口,其实是...

网友评论

      本文标题:JAVA8-lambda表达式

      本文链接:https://www.haomeiwen.com/subject/uhbxfqtx.html