该语法糖在jvm脚本语言Groovy/Scale已有很好的支持,Java从8.0才开始支持该特性。
/** * 基础Lambda表达式 * */ public static void testLambda() { String[] ss = { "hello", "world", "sun" }; List<String> list = Arrays.asList(ss); // 接口作为回调函数,C: typdef int (*func)(int,int) AddService func = (int a, int b) -> (a + b); func.add(20, 21); // 多条语句用{}包围 AddService func1 = (int a, int b) -> { System.out.println("count"); return (a + b); }; func1.add(20, 21); // 1.遍历 // forEach list.forEach((player) -> System.out.println(player)); // :: list.forEach(System.out::println); // 2.排序 Arrays.sort(ss, (String s1, String s2) -> (s1.compareTo(s2))); // 3.线程 new Thread(() -> System.out.println(Thread.currentThread().getName() + ">Say hello")).start(); Runnable th1 = () -> System.out.println(Thread.currentThread().getName() + ">Say world"); th1.run(); } /** * Stream lambda * 强大的filter条件过滤 */ public static void testStream() { // Programmer List<Person> progm = 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)); } }; // 定义filter Predicate<Person> ageFilter = (p) -> (p.getAge() > 21); // age>21 Predicate<Person> salaryFilter = (p) -> (p.getSalary() > 1000); // salary>1000 Predicate<Person> genderFilter = (p) -> ("female".equals(p.getGender())); // femail // 过滤年龄大于21岁且月薪大于$1,000以上的2名女程序员 progm.stream() .filter(ageFilter) .filter(salaryFilter) .filter(genderFilter) .limit(2) // 只取2条记录 .forEach((p) -> System.out.printf("%s %s; ", p.getFirstname(), p.getLastname())); // 根据姓排序,将结果输出至list List<Person> sortprogm = progm .stream() .sorted( (p,p2) -> (p.getFirstname().compareTo(p2.getFirstname()))) .limit(2) .collect( Collectors.toList() ); // 过滤工资最低的程序员 Person per = progm .stream() .min( (p,p2) -> (p.getSalary() - p2.getSalary()) ) .get(); /// map/reduce lambda表达式不可或缺两组函数 // map --> 将姓添加至set Set<String> set = progm .stream() .map(Person::getFirstname) .collect( Collectors.toSet() ); // reduce --> 所有工资的总和 int total = progm .stream() .map( Person::getSalary ) .reduce( 0, (a,b) -> a+b ); // 数组最大最小值,总和,平均值等汇总 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); IntSummaryStatistics stats = numbers .stream() .mapToInt((x) -> x) .summaryStatistics(); }
参考链接:
相关推荐
java lambda 表达式中文详解(语言篇和类库篇),更方便更快捷了解java lambda表达式
在了解Lambda表达式之前我们先来区分一下面向对象的思想和函数式编程思想的区别 面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用他的方法来解决 函数时编程思想: 只要能获取到结果,谁去做的都不...
——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!
这段代码实现了一个简单的用户管理系统UserManager,其中使用了Java的Lambda表达式。在类的构造方法中,首先创建了一个空的用户列表users。然后实现了四个方法:addUser()用于添加用户,removeUser()用于删除用户,...
像这样的日志代码会更好: if (log.isLoggable(Level.FINE)) { log.log(Level.FINE, "I am here, and the value of X is {} and Y is {}",...假定你已经完成了分析,并且判断出是运行环境中Java 组件的性能需要改善。
JAVA新特性Lambda的演示,让你通过实例,短时间内搞清什么是Lambda表达式及其用法。
主要介绍了Java lambda 循环累加求和代码,具有很的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
java lambda函数式编程完成实例代码,看完代码,基本上就会用lambda 了
详细讲解 Java Lambda 在不同场景下的应用,如 I/O,数据访问,并发等等。Lambda 能极大简化代码量,有利于阅读,是未来开发人员必须掌握的基础知识。
Java lambda Stream List过滤筛选、排序、分组(Java进阶)
1、本文详细描述了java lambda介绍及使用方法。 2、通过详细示例,让读者更直观地阅读,更清晰的理解。 3、示例代码可直接复制,编译后可直接运行。 4、根据示例以及运行结果,让读者加强记忆及理解。
走进Java Lambda
java8lambda表达式的安卓Studio工程Demo,供初步学习使用
JAVA lambda表达式
Lambda表达式,只是自己学习的一些网页内容,可以自行百度学习,
Lambda将从根本上改变我们开发Java程序的方式,对于JAVA程序员来说是很不错的。
主要介绍了Java lambda list转换map时,把多个参数拼接作为key操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要介绍了Java Lambda表达式原理及多线程实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java lambda表达式,lambda 表达式基本上表达了函数式接口的实例(具有单一抽象方法的接口称为函数式接口。一个例子是 java.lang.Runnable)。lambda 表达式实现了唯一的抽象函数,因此实现了函数式接口 lambda ...
Java 1.8 lambda表达式示例源码