该语法糖在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 8引入的一项重要特性,它极大地简化了函数式编程,使得处理集合数据和异步编程变得更加简洁。Lambda表达式在Java中被设计为一种匿名函数,可以没有名称地传递,并且可以当作参数或返回值。...
Java Lambda表达式是Java 8引入的一个重要特性,它标志着Java开始支持函数式编程风格。在传统的面向对象编程中,我们通常通过创建对象并调用其方法来执行任务。而函数式编程则更加关注结果,而不是执行任务的具体...
Java Lambda表达式是Java 8引入的一个重要特性,它极大地简化了函数式编程风格的实现。Lambda表达式允许我们将函数作为一个值传递,就像传递其他数据类型一样。这在处理集合、事件驱动编程以及多线程等场景下尤其...
Java Lambda表达式是Java 8引入的一项重大特性,它彻底改变了我们编写函数式编程的方式,使得代码更加简洁、高效。Lambda表达式的核心理念是将功能作为方法参数传递,或者将其存储为字段,甚至在没有显式类型声明的...
Java Lambda 是一种强大的语法特性,它在 Java 8 中被引入,使得函数式编程成为可能。Lambda 表达式简化了处理匿名函数的方式,让代码更简洁、易读。在这个"java lambda入门到高级代码实例"中,我们将深入探讨Lambda...
Java 8 引入了Lambda表达式,这是对传统编程方式的一大革新,它极大地简化了函数式编程,尤其是在处理集合和并发操作时。Lambda表达式是Java 8中的一种语法糖,它允许开发者以更简洁的方式定义无状态、无副作用的...
Java Lambda 表达式是Java 8引入的一种新特性,它极大地简化了代码,特别是处理函数式编程场景。Lambda表达式本质上是匿名函数,可以作为参数传递,也可以被存储和复用。在Java中,它们通常与接口一起使用,这些接口...
Java Lambda 表达式介绍及使用 Java Lambda 表达式是 Java 语言中的一种函数式编程特性,允许将简单的函数作为操作传递给方法,或者将代码更简洁地定义在一个表达式的上下文中。Lambda 表达式在 Java 8 中被引入,...
Java 8是Java语言的一个重大版本更新,它引入了lambda表达式,这是Java平台的核心特性之一。Lambda表达式为Java带来了函数式编程的元素,使得开发者可以以更简洁的方式编写代码,尤其是在集合和多线程方面。本资料...
### Java Lambda 编程之道 #### 一、Java 8:全新的编程体验 在Java 8发布之前,Java程序员一直在寻求更加简洁、高效的编程方式。Java 8的引入带来了一系列新特性,其中最为显著的就是Lambda表达式的加入。这不仅...
Java Lambda表达式是Java 8引入的一个重要特性,它极大地简化了函数式编程,并使得代码更加简洁、易读。在传统的面向对象编程中,我们通常通过创建对象并调用其方法来解决问题。而函数式编程则更注重结果,不关心...
Java Lambda 函数式编程是Java 8引入的一项重要特性,它极大地简化了处理函数对象的方式,使得代码更加简洁、易读。Lambda表达式是函数式编程的核心,它允许我们将函数作为一个参数传递,或者将函数作为返回值。在这...
Java Lambda 表达式是Java 8引入的一个重要特性,它允许程序员以更简洁的方式传递匿名函数。Lambda表达式在处理函数式接口时特别有用,这些接口只有一个抽象方法,如`Comparator`。Lambda表达式的引入使得Java语言...
Java Lambda 循环累加求和代码 Java Lambda 循环累加求和代码是 Java 8 中引入的 Stream API 中的一种重要特性,主要用于对集合中的元素进行累加运算。本文将详细介绍 Java Lambda 循环累加求和代码的实现方法和...
### 使用Java Lambda表达式实现一个简单的用户管理系统 #### 背景介绍 Lambda表达式是Java 8引入的一项重要特性,它允许开发者以简洁、直观的方式编写匿名函数。这一特性极大地提高了代码的可读性和可维护性,尤其...
### Java Lambda表达式详解 #### 引言 随着软件开发技术的发展,编程语言也在不断进步以适应更高的效率和更简洁的编码风格。Java作为一种广泛应用于企业级应用开发的语言,在其第八版更新中引入了许多令人期待的新...
JAVA新特性Lambda的演示,让你通过实例,短时间内搞清什么是Lambda表达式及其用法。
### 使用Java Lambda表达式实现一个简单的员工管理系统 #### 一、概述 本文将详细介绍如何使用Java Lambda表达式来实现一个简单的员工管理系统。该系统主要包括两个核心类:`Employee` 和 `EmployeeManager`。通过...
Java中的Lambda表达式是Java 8引入的一项重要特性,它为编写简洁、高效的代码提供了新的方式。Lambda表达式是函数式编程的一个核心概念,允许我们将函数作为方法的参数或者作为一个独立的对象来使用。这种能力使得...