JAVA lambda 简单例子

news/2024/12/5 5:27:45/

多了不说直接上代码

 

package com.example.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Test {

    public static void main(String[] args) {
        List<Person> javaProgrammers = new ArrayList<Person>() {
            private static final long serialVersionUID = 1L;
            {
                add(new Person("Elsdon", "Jaycob", "Java programmer", "male",
                        43, 2000));
                add(new Person("Tamsen", "Brittany", "Java programmer",
                        "female", 23, 1500));
                add(new Person("Floyd", "Donny", "Java programmer", "male", 33,
                        1800));
                add(new Person("Sindy", "Jonie", "Java programmer", "female",
                        32, 1600));
                add(new Person("Vere", "Hervey", "Java programmer", "male", 22,
                        1200));
                add(new Person("Maude", "Jaimie", "Java programmer", "female",
                        27, 1900));
                add(new Person("Shawn", "Randall", "Java programmer", "male",
                        30, 2300));
                add(new Person("Jayden", "Corrina", "Java programmer", "female",
                        35, 1700));
                add(new Person("Palmer", "Dene", "Java programmer", "male", 33,
                        2000));
                add(new Person("Addison", "Pam", "Java programmer", "female",
                        34, 1300));
            }
        };
        List<Person> phpProgrammers = new ArrayList<Person>() {
            private static final long serialVersionUID = 1L;
            {
                int i = 0;
                while (i < 100) {
                    add(new Person("Jarrod_" + i, "Pace", "PHP programmer",
                            "male", 34, 1550));
                    i++;
                }
                add(new Person("Jarrod", "Pace", "PHP programmer", "male", 34,
                        1550));
                add(new Person("Clarette", "Cicely", "PHP programmer", "female",
                        23, 1200));
                add(new Person("Victor", "Channing", "PHP programmer", "male",
                        32, 1600));
                add(new Person("Tori", "Sheryl", "PHP programmer", "female", 21,
                        1000));
                add(new Person("Osborne", "Shad", "PHP programmer", "male", 32,
                        1100));
                add(new Person("Rosalind", "Layla", "PHP programmer", "female",
                        25, 1300));
                add(new Person("Fraser", "Hewie", "PHP programmer", "male", 36,
                        1100));
                add(new Person("Quinn", "Tamara", "PHP programmer", "female",
                        21, 1000));
                add(new Person("Alvin", "Lance", "PHP programmer", "male", 38,
                        1600));
                add(new Person("Evonne", "Shari", "PHP programmer", "female",
                        40, 1800));
            }
        };
        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.andThen(e -> System.out.println(e)));
        phpProgrammers.forEach(giveRaise.andThen(e -> System.out.println(e)));

        // filters
        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()));

        // filters
        System.out.println("年龄大于 24岁的女性 Java programmers:");
        javaProgrammers.stream().filter(ageFilter).filter(genderFilter)
                .forEach((p) -> System.out.printf("%s %s; ", p.getFirstName(),
                        p.getLastName()));
        // limit
        System.out.println("最前面的3个 Java programmers:");
        javaProgrammers.stream().limit(3).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()));

        // sorted
        System.out.println("根据 name 排序,并显示前5个 Java programmers:");
        List<Person> sortedJavaProgrammers = javaProgrammers.stream().sorted(
                (p, p2) -> (p.getFirstName().compareTo(p2.getFirstName())))
                .limit(5).collect(Collectors.toList());

        sortedJavaProgrammers.forEach((p) -> System.out.printf("%s %s; %n",
                p.getFirstName(), p.getLastName()));

        // Collectors.toList
        System.out.println("根据 salary 排序 Java programmers:");
        sortedJavaProgrammers = javaProgrammers.stream()
                .sorted((p, p2) -> (p.getSalary() - p2.getSalary()))
                .collect(Collectors.toList());

        sortedJavaProgrammers.forEach((p) -> System.out.printf("%s %s; %n",
                p.getFirstName(), p.getLastName()));

        // min
        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());

        // max
        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());

        // Collectors.joining
        System.out.println("将 PHP programmers 的 first name 拼接成字符串:");
        String phpDevelopers = phpProgrammers.stream().map(Person::getFirstName)
                .collect(Collectors.joining(" ; ")); // 在进一步的操作中可以作为标记(token)

        // Collectors.toSet
        System.out.println("将 Java programmers 的 first name 存放到 Set:");
        Set<String> javaDevFirstName = javaProgrammers.stream()
                .map(Person::getFirstName).collect(Collectors.toSet());

        // Collectors.toCollection
        System.out.println("将 Java programmers 的 first name 存放到 TreeSet:");
        TreeSet<String> javaDevLastName = javaProgrammers.stream()
                .map(Person::getLastName)
                .collect(Collectors.toCollection(TreeSet::new));

        // parallelStream
        System.out.println("计算付给 Java programmers 的所有money:");
        int totalSalary = javaProgrammers.parallelStream()
                .mapToInt(p -> p.getSalary()).sum();

        // 计算 count, min, max, sum, and average for numbers
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x)
                .summaryStatistics();

        System.out.println("List中最大的数字 : " + stats.getMax());
        System.out.println("List中最小的数字 : " + stats.getMin());
        System.out.println("所有数字的总和   : " + stats.getSum());
        System.out.println("所有数字的平均值 : " + stats.getAverage());
    }

    public static 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;
        }

        @Override
        public String toString() {
            return "Person [firstName=" + firstName + ", lastName=" + lastName
                    + ", job=" + job + ", gender=" + gender + ", salary="
                    + salary + ", age=" + age + "]";
        }

    }
}
 


http://www.ppmy.cn/news/298008.html

相关文章

转载 华硕A6的拆解

华硕A6的拆解 华硕A6的拆解 工具&#xff1a;十字改锥&#xff0c;镊子 1应该先拔掉电源和电池&#xff0c;防止短路。 2把电脑翻过来&#xff0c;去掉背面中部的2颗螺丝&#xff0c;然后打开盖子&#xff0c;下面是内存插槽和无线网卡插槽&#xff0c;先拆内存&#xff0c…

请问python如何处理url带有“?”参数的接口?

在Python中处理带有"?"参数的URL接口&#xff0c;可以使用urllib.parse库中的urlencode()函数来进行编码。以下是一些示例代码 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站百万播放全网第一的自动化测试教程&#x…

T2-U开发板实现红外遥控接收与发送

文章目录 一、红外概况二、发射1. 调制2. 红外传输协议3. 编码 三、接收四、T2-U开发板硬件连接五、TuyaOS红外功能介绍红外接收功能 六、红外功能代码使用流程1. 硬件注册2. 设备查找3. 打开设备4. 红外发送5. 红外接收6. 接收回调注册 红外遥控是利用近红外光进行数据传输的一…

10 概率方法

文章目录 10 概率方法10.1 Ramsey Numbers10.1.1 Ramsey Numbers是什么&#xff1f;10.1.2 Ramsey Numbers有什么性质&#xff1f; 10.2 独立集10.3 Max-Cut10.4 K-SAT 10 概率方法 概率方法是一种用于证明组合对象存在的方法&#xff0c;例如以下一组案例&#xff1a; 目标&a…

Linux进程间通信【共享内存】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、什么是共享内存&#xff1f;2、共享内存的相关知识2.1、共享内存的数据结构…

ChatGPT 入门教程||ChatGPT 应用场景3:推理||ChatGPT 应用场景4:生成代码

ChatGPT 应用场景3&#xff1a;推理 场景介绍​ 在问答这个大场景下&#xff0c;还有一个子场景是推理&#xff0c;这个场景非常有意思&#xff0c;而且是个非常值得深挖的场景&#xff0c;prompt 在此场景里发挥的作用非常大。 如果你想用 ChatGPT API 做点什么小应用&…

北京市乡镇人口数据

北京市乡、镇、街道人口单位:人、户地区别总人口家庭户户数家庭户总人口分年龄人口居住本合 计男女合 计男女0-14岁15-64岁65岁及以上地&#xff0c;户口 小 计男女 小 计男女 小 计男女在本地 合 计1356919470745186494676409684411922945592567059972751843768958876…

不用看数学公式!图解谷歌神经机器翻译核心部分:注意力机制

乾明 编译整理量子位 出品 | 公众号 QbitAI 注意力&#xff08;Attention&#xff09;机制&#xff0c;是神经机器翻译模型中非常重要的一环&#xff0c;直接影响了翻译的准确度与否。 可以这么说&#xff0c;没有注意力机制&#xff0c;机器翻译的水平只有60-70分。有了注意力…