zoukankan      html  css  js  c++  java
  • Java8 Predicate

    code:

    package com.qhong;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import static com.qhong.EmployeePredicates.*;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            Employee e1 = new Employee(1,23,"M","Rick","Beethovan");
            Employee e2 = new Employee(2,13,"F","Martina","Hengis");
            Employee e3 = new Employee(3,43,"M","Ricky","Martin");
            Employee e4 = new Employee(4,26,"M","Jon","Lowman");
            Employee e5 = new Employee(5,19,"F","Cristine","Maria");
            Employee e6 = new Employee(6,15,"M","David","Feezor");
            Employee e7 = new Employee(7,68,"F","Melissa","Roy");
            Employee e8 = new Employee(8,79,"M","Alex","Gussin");
            Employee e9 = new Employee(9,15,"F","Neetu","Singh");
            Employee e10 = new Employee(10,45,"M","Naveen","Jain");
    
            List<Employee> employees = new ArrayList<Employee>();
            employees.addAll(Arrays.asList(new Employee[]{e1,e2,e3,e4,e5,e6,e7,e8,e9,e10}));
    
            System.out.println(filterEmployees(employees, isAdultMale()));
    
            System.out.println(filterEmployees(employees, isAdultFemale()));
    
            System.out.println(filterEmployees(employees, isAgeMoreThan(35)));
    
            //Employees other than above collection of "isAgeMoreThan(35)" can be get using negate()
            System.out.println(filterEmployees(employees, isAgeMoreThan(35).negate()));
        }
    
    }
    
    class Employee {
    
        public Employee(Integer id, Integer age, String gender, String fName, String lName){
            this.id = id;
            this.age = age;
            this.gender = gender;
            this.firstName = fName;
            this.lastName = lName;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        private Integer id;
        private Integer age;
        private String gender;
        private String firstName;
        private String lastName;
    
        //Please generate Getter and Setters
    
        @Override
        public String toString() {
            return this.id.toString()+" - "+this.age.toString(); //To change body of generated methods, choose Tools | Templates.
        }
    }
    package com.qhong;
    
    import java.util.List;
    import java.util.function.Predicate;
    import java.util.stream.Collectors;
    
    
    /**
     * Created by qhong on 2017/3/14.
     */
    public class EmployeePredicates
    {
        public static Predicate<Employee> isAdultMale() {
            return p -> p.getAge() > 21 && p.getGender().equalsIgnoreCase("M");
        }
    
        public static Predicate<Employee> isAdultFemale() {
            return p -> p.getAge() > 18 && p.getGender().equalsIgnoreCase("F");
        }
    
        public static Predicate<Employee> isAgeMoreThan(Integer age) {
            return p -> p.getAge() > age;
        }
    
        public static List<Employee> filterEmployees (List<Employee> employees, Predicate<Employee> predicate) {
            return employees.stream().filter( predicate ).collect(Collectors.<Employee>toList());
        }
    }

    result:

    [1 - 23, 3 - 43, 4 - 26, 8 - 79, 10 - 45]
    [5 - 19, 7 - 68]
    [3 - 43, 7 - 68, 8 - 79, 10 - 45]
    [1 - 23, 2 - 13, 4 - 26, 5 - 19, 6 - 15, 9 - 15]

    http://howtodoinjava.com/java-8/how-to-use-predicate-in-java-8/

  • 相关阅读:
    网页打开速度的心理学
    UML建模——用例图(Use Case Diagram)
    漫谈干系人识别管理
    干系人分析的3个方法:除了目标用户还要考虑谁?
    计算机网络-复习笔记
    项目经理必掌握的国际项目管理知识体系结构及内容
    剑指Offer面试题:5.重建二叉树
    剑指Offer面试题:4.从尾到头打印链表
    剑指Offer面试题:3.替换空格
    剑指Offer面试题:2.二维数组中的查找
  • 原文地址:https://www.cnblogs.com/hongdada/p/6550869.html
Copyright © 2011-2022 走看看