关于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; }}
阅读全文
1 0
- 关于lambda表达式一些用法
- jdk1.8 lambda表达式处理集合的一些用法
- lambda表达式用法
- c++ Lambda表达式用法
- C++ Lambda表达式用法
- lambda表达式的用法
- C++Lambda表达式用法
- C++ Lambda表达式用法
- C++ Lambda表达式用法
- 关于lambda表达式和插入迭代器的一些说明
- lambda的一些用法
- 关于Lambda表达式
- 关于lambda表达式
- 关于lambda表达式
- 关于C++ Lambda表达式
- C#—Lambda表达式用法
- python lambda表达式简单用法
- python -lambda表达式的用法
- MongoDB相关知识
- Hibernate中Criteria查询常用方法
- 前端性能优化方法
- Linux 常见命令
- 欢迎使用CSDN-markdown编辑器
- 关于lambda表达式一些用法
- C++进阶—>内联函数inline
- Mapreduce之自定义InputFormat-小文件合并
- 5.Nginx进程通信
- 查看mysql中所有的外键信息
- 架构权衡分析法ATAM
- Tensorflow 学习与复习 Epoch_3 (未完)
- 关于Java并发编程的总结和思考
- spring和mybatis框架中实现文件上传功能