关于lambda表达式一些用法

来源:互联网 发布:三生网络直销好做吗 编辑:程序博客网 时间:2024/06/13 19:57

直接给个例子吧,复制过去就能运行看效果的

package com.rogrand.highsunproperty.test.lambda;import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.TreeSet;import java.util.function.Consumer;import java.util.function.Predicate;import static java.util.stream.Collectors.*;public class Person {    private String firstName, lastName, job, gender;    private int salary, age;    public Person(String firstName, String lastName, String job,                  String gender, int age, int salary) {        this.firstName = firstName;        this.lastName = lastName;        this.gender = gender;        this.age = age;        this.job = job;        this.salary = salary;    }    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;    }    public String getJob() {        return job;    }    public void setJob(String job) {        this.job = job;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    public int getSalary() {        return salary;    }    public void setSalary(int salary) {        this.salary = salary;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public static void main(String[] args) {        List<Person> javaProgrammers = getJavaPersons();        List<Person> phpProgrammers = getPhpPersons();        System.out.println("*********所有程序员的姓名****:");        javaProgrammers.forEach(p -> System.out.printf("%s %s; ", p.getFirstName(), p.getLastName()));        phpProgrammers.forEach(p -> System.out.printf("%s %s; ", p.getFirstName(), p.getLastName()));        System.out.println("给程序员加薪 5% :");        Consumer<Person> giveRaise = e -> e.setSalary(e.getSalary() / 100 * 5 + e.getSalary());        javaProgrammers.forEach(giveRaise);        phpProgrammers.forEach(giveRaise);        System.out.println("下面是月薪超过 $1,400 的PHP程序员:");        phpProgrammers.stream()                .filter((p) -> (p.getSalary() > 1400))                .forEach((p) -> System.out.printf("%s %s; ", p.getFirstName(), p.getLastName()));        // 定义 filters        Predicate<Person> ageFilter = (p) -> (p.getAge() > 25);        Predicate<Person> salaryFilter = (p) -> (p.getSalary() > 1400);        Predicate<Person> genderFilter = (p) -> ("female".equals(p.getGender()));        System.out.println("下面是年龄大于 24岁且月薪在$1,400以上的女PHP程序员:");        phpProgrammers.stream()                .filter(ageFilter)                .filter(salaryFilter)                .filter(genderFilter)                .forEach((p) -> System.out.printf("%s %s; ", p.getFirstName(), p.getLastName()));        System.out.println("最前面的3个女性 Java programmers:");        javaProgrammers.stream().filter(genderFilter).limit(3).forEach((p) -> System.out.printf("%s %s; ", p.getFirstName(), p.getLastName()));        System.out.println("根据 name 排序,并显示前5个 Java programmers:");        List<Person> sortedJavaProgrammers = javaProgrammers.stream().sorted((p, p2) -> (p.getFirstName().compareTo(p2.getFirstName())))                .limit(5).collect(toList());        sortedJavaProgrammers.forEach((p) -> System.out.printf("%s %s; %n", p.getFirstName(), p.getLastName()));        System.out.println("获取java程序员所有的年龄(去掉重复的):");        Set<Integer> collect = javaProgrammers.stream().map(Person::getAge).collect(toSet());//降年龄装换成set集合,如果不需要去重可以使用List        collect.stream().sorted().forEach(info -> System.out.printf("%s; ", info));//升序        collect.stream().sorted((p, p2) -> (p2 - p)).forEach(info -> System.out.printf("%s; ", info));//降序        System.out.println("工资最低的 Java programmer:");        Person pers = javaProgrammers.stream().min((p1, p2) -> (p1.getSalary() - p2.getSalary())).get();        System.out.printf("Name: %s %s; Salary: $%,d.", pers.getFirstName(), pers.getLastName(), pers.getSalary());        System.out.println();        System.out.println("工资最高的 Java programmer:");        Person person = javaProgrammers.stream().max((p, p2) -> (p.getSalary() - p2.getSalary())).get();        System.out.printf("Name: %s %s; Salary: $%,d.", person.getFirstName(), person.getLastName(), person.getSalary());        System.out.println();        System.out.print("将 PHP programmers 的 first name 拼接成字符串:");        String phpDevelopers = phpProgrammers.stream().map(Person::getFirstName).collect(joining(" ; ")); // 在进一步的操作中可以作为标记(token)        System.out.println(phpDevelopers);        System.out.print("将 Java programmers 的 first name 存放到 Set:");        Set<String> javaDevFirstName = javaProgrammers.stream().map(Person::getFirstName).collect(toSet());        javaDevFirstName.forEach(s -> System.out.println(s));        System.out.println("将 Java programmers 的 first name 存放到 TreeSet:");        TreeSet<String> javaDevLastName = javaProgrammers.stream().map(Person::getLastName).collect(toCollection(TreeSet::new));        javaDevLastName.forEach(s -> System.out.println(s));    }    private static List<Person> getPhpPersons() {        List<Person> phpProgrammers = new ArrayList<>();        phpProgrammers.add(new Person("Jarrod", "Pace", "PHP programmer", "male", 34, 1550));        phpProgrammers.add(new Person("Clarette", "Cicely", "PHP programmer", "female", 23, 1200));        phpProgrammers.add(new Person("Victor", "Channing", "PHP programmer", "male", 32, 1600));        phpProgrammers.add(new Person("Tori", "Sheryl", "PHP programmer", "female", 21, 1000));        phpProgrammers.add(new Person("Osborne", "Shad", "PHP programmer", "male", 32, 1100));        phpProgrammers.add(new Person("Rosalind", "Layla", "PHP programmer", "female", 25, 1300));        phpProgrammers.add(new Person("Fraser", "Hewie", "PHP programmer", "male", 36, 1100));        phpProgrammers.add(new Person("Quinn", "Tamara", "PHP programmer", "female", 21, 1000));        phpProgrammers.add(new Person("Alvin", "Lance", "PHP programmer", "male", 38, 1600));        phpProgrammers.add(new Person("Evonne", "Shari", "PHP programmer", "female", 40, 1800));        return phpProgrammers;    }    private static List<Person> getJavaPersons() {        List<Person> javaProgrammers = new ArrayList<>();        javaProgrammers.add(new Person("Elsdon", "Jaycob", "Java programmer", "male", 23, 2000));        javaProgrammers.add(new Person("Tamsen", "Brittany", "Java programmer", "female", 23, 1500));        javaProgrammers.add(new Person("Floyd", "Donny", "Java programmer", "male", 23, 1800));        javaProgrammers.add(new Person("Sindy", "Jonie", "Java programmer", "female", 32, 1600));        javaProgrammers.add(new Person("Vere", "Hervey", "Java programmer", "male", 22, 1200));        javaProgrammers.add(new Person("Maude", "Jaimie", "Java programmer", "female", 27, 1900));        javaProgrammers.add(new Person("Shawn", "Randall", "Java programmer", "male", 30, 2300));        javaProgrammers.add(new Person("Jayden", "Corrina", "Java programmer", "female", 35, 1700));        javaProgrammers.add(new Person("Palmer", "Dene", "Java programmer", "male", 33, 2000));        javaProgrammers.add(new Person("Addison", "Pam", "Java programmer", "female", 34, 1300));        return javaProgrammers;    }}

原创粉丝点击