jdk1.8 Lambda表达式的使用

编程入门 行业动态 更新时间:2024-10-27 08:32:08

参考博文
blogs./franson-2016/p/5593080.html

Lambda表达式的语法
基本语法:
(parameters) -> expression

(parameters) ->{ statements; }

下面是Java lambda表达式的简单例子

// 1. 不需要参数,返回值为 5  
() -> 5  // 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  // 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  // 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)

详细示例1

package pojo;import java.util.Arrays;
import java.util.List;public class Test_1 {public static void main(String[] args) {String[] atp = {"Rafael Nadal", "Novak Djokovic","Stanislas Wawrinka","David Ferrer", "Roger Federer","Andy Murray", "Tomas Berdych","Juan Martin Del Potro"};List<String> players = Arrays.asList(atp);// 以前的循环方式for (String player : players) {System.out.println(player + "; ");}//使用 lambda 表达式以及函数操作(functional operation)players.forEach((a) ->{System.out.println(a + "; ");});}
}

详细示例2

package pojo;public class Test_2 {public static void main(String[] args) {// 1.1使用匿名内部类new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Hello world !");}}).start();//1.2使用 lambda expressionnew Thread(() -> System.out.println("Hello world !")).start();}
}

详细示例3

package pojo;import java.util.Arrays;
import java.util.Comparator;public class Test_3 {public static void main(String[] args) {String[] players = {"a", "c","e", "f","z", "w","b", "W","S", "E"};// 1.1 使用匿名内部类根据 name 排序 playersArrays.sort(players, new Comparator<String>() {@Overridepublic int pare(String s1, String s2) {return (s1.pareTo(s2));}});//使用 lambda expression 方式1Arrays.sort(players, (String s1, String s2) -> s1.pareTo(s2));//使用 lambda expression 方式2Comparator<String> paixu = (String s1, String s2) -> s1.pareTo(s2);Arrays.sort(players, paixu);System.out.println(Arrays.asList(players));}
}

详细示例4

package pojo;import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.function.Predicate;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 Person() {}
}public class Test_4 {public static void main(String[] args) {ArrayList<Person> javaProgrammers = new ArrayList<Person>() {{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));}};ArrayList<Person> phpProgrammers = new ArrayList<Person>() {{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));}};//显示姓名javaProgrammers.forEach((aa) -> {System.out.printf("%s %s; ", aa.getFirstName(), aa.getLastName());});//加薪 5%javaProgrammers.forEach((aa) -> {aa.setSalary(aa.getSalary() / 100 * 5 + aa.getSalary());});//显示姓名 薪水javaProgrammers.forEach((aa) -> {System.out.println(aa.getFirstName() + "  " + aa.getSalary());});//过滤phpProgrammers.stream().filter(new Predicate<Person>() {@Overridepublic boolean test(Person person) {return person.getSalary() > 1400;}}).forEach(new Consumer<Person>() {@Overridepublic void aept(Person person) {System.out.println(person);}});System.out.println();//实现同上的效果phpProgrammers.stream().filter((aa) -> (aa.getSalary() > 1400)).forEach((bb) -> System.out.println(bb));//多个过滤器Predicate<Person> filter_1 = (a) -> (a.getSalary() > 1400);Predicate<Person> filter_2 = (a) -> {return "female".equals(a.getGender());};Predicate<Person> filter_3 = (a) -> {return a.getAge() > 25;};phpProgrammers.stream().filter(filter_1).filter(filter_2).filter(filter_3).forEach((p) -> {System.out.println(p);});}
}

 

更多推荐

表达式,Lambda

本文发布于:2023-05-31 12:02:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/391373.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表达式   Lambda

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!