`
tcspecial
  • 浏览: 901893 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java Lambda

    博客分类:
  • java
阅读更多

 

该语法糖在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 表达式(语言篇和类库篇)

    Java Lambda 表达式是Java 8引入的一项重要特性,它极大地简化了函数式编程,使得处理集合数据和异步编程变得更加简洁。Lambda表达式在Java中被设计为一种匿名函数,可以没有名称地传递,并且可以当作参数或返回值。...

    lambda-change-java.rar_java lambda_lambda

    Java Lambda表达式是Java 8引入的一项重大特性,它彻底改变了我们编写函数式编程的方式,使得代码更加简洁、高效。Lambda表达式的核心理念是将功能作为方法参数传递,或者将其存储为字段,甚至在没有显式类型声明的...

    java lambda入门到高级代码实例

    Java Lambda 是一种强大的语法特性,它在 Java 8 中被引入,使得函数式编程成为可能。Lambda 表达式简化了处理匿名函数的方式,让代码更简洁、易读。在这个"java lambda入门到高级代码实例"中,我们将深入探讨Lambda...

    JavaLambda表达式和匿名类.pdf

    Java 8 引入了Lambda表达式,这是对传统编程方式的一大革新,它极大地简化了函数式编程,尤其是在处理集合和并发操作时。Lambda表达式是Java 8中的一种语法糖,它允许开发者以更简洁的方式定义无状态、无副作用的...

    Java Lambda表达式方法使用详解.docx

    在了解Lambda表达式之前我们先来区分一下面向对象的思想和函数式编程思想的区别 面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用他的方法来解决 函数时编程思想: 只要能获取到结果,谁去做的都不...

    java lambda介绍及使用

    Java Lambda 表达式介绍及使用 Java Lambda 表达式是 Java 语言中的一种函数式编程特性,允许将简单的函数作为操作传递给方法,或者将代码更简洁地定义在一个表达式的上下文中。Lambda 表达式在 Java 8 中被引入,...

    java lambda函数式编程完成实例代码

    Java Lambda 函数式编程是Java 8引入的一项重要特性,它极大地简化了处理函数对象的方式,使得代码更加简洁、易读。Lambda表达式是函数式编程的核心,它允许我们将函数作为一个参数传递,或者将函数作为返回值。在这...

    01-Java Lambda实战教程.pdf

    Java Lambda 实战教程主要聚焦于Java 8的新特性——Lambda表达式,它是Java语言的一次重大更新,使得代码更加简洁且高效。Lambda表达式引入了函数式编程的概念,让Java开发者能够以一种更加灵活的方式处理代码,特别...

    Java lambda 循环累加求和代码

    Java Lambda 循环累加求和代码 Java Lambda 循环累加求和代码是 Java 8 中引入的 Stream API 中的一种重要特性,主要用于对集合中的元素进行累加运算。本文将详细介绍 Java Lambda 循环累加求和代码的实现方法和...

    使用Java Lambda表达式实现一个简单的用户管理系统.txt

    这段代码实现了一个简单的用户管理系统UserManager,其中使用了Java的Lambda表达式。在类的构造方法中,首先创建了一个空的用户列表users。然后实现了四个方法:addUser()用于添加用户,removeUser()用于删除用户,...

    Java lambda.

    JAVA新特性Lambda的演示,让你通过实例,短时间内搞清什么是Lambda表达式及其用法。

    Java Lambda表达式

    Java中的Lambda表达式是Java 8引入的一项重要特性,它为编写简洁、高效的代码提供了新的方式。Lambda表达式是函数式编程的一个核心概念,允许我们将函数作为方法的参数或者作为一个独立的对象来使用。这种能力使得...

    java8lambda表达式Demo

    Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁、更易读的方式编写代码,特别是在处理集合和并发任务时。在这...

    JAVA lambda表达式

    Java Lambda表达式是Java编程语言的一个重要特性,自Java 8开始引入,它极大地简化了函数式编程,尤其是在处理集合和并发操作时。Lambda表达式的主要目标是使代码更加简洁、易读,同时提高程序的可维护性。下面将...

    Java Lambda 编程之道

    详细讲解 Java Lambda 在不同场景下的应用,如 I/O,数据访问,并发等等。Lambda 能极大简化代码量,有利于阅读,是未来开发人员必须掌握的基础知识。

    Java lambda list转换map时,把多个参数拼接作为key操作

    Java lambda list转换map时,把多个参数拼接作为key操作 Java lambda list转换map时,把多个参数拼接作为key操作是Java开发中常见的操作。下面将详细介绍该操作的实现方法和需要注意的两个大坑。 一、Java lambda ...

    Java lambda Stream List过滤筛选、排序、分组(Java进阶).md

    Java lambda Stream List过滤筛选、排序、分组(Java进阶)

    Java Lambda表达式原理及多线程实现

    Java Lambda 表达式原理及多线程实现 Java Lambda 表达式是一种函数式编程风格的表达式,用于简化匿名内部类的书写,使代码更加简洁易读。Lambda 表达式的标准格式为:(参数列表,用逗号隔开)-&gt; {一些重写方法的...

    Java 8 lambda表达式

    java lambda表达式,lambda 表达式基本上表达了函数式接口的实例(具有单一抽象方法的接口称为函数式接口。一个例子是 java.lang.Runnable)。lambda 表达式实现了唯一的抽象函数,因此实现了函数式接口 lambda ...

    java lambda入门

    Java Lambda入门教程旨在引导开发者了解并掌握Java 8引入的一项重要特性——Lambda表达式。Lambda表达式是函数式编程的核心元素,它简化了代码,尤其是处理匿名内部类时的复杂性,使得Java语言更加简洁、易读。在这...

Global site tag (gtag.js) - Google Analytics