Demo:

package com.qhong;

public class Main {
public static void main(String[] args) throws Exception {
new Thread(new Runnable(){
@Override
public void run(){
System.out.println("Before Java8");
}
}).start(); new Thread(()->System.out.println("In Java8")).start();
}
}
Before Java8
In Java8

循环:

package com.qhong;

import java.util.Arrays;
import java.util.List; public class Main {
public static void main(String[] args) throws Exception {
List<String> list= Arrays.asList("a","b","c");
for(String str:list){
System.out.println(str);
}
System.out.println("----------------");
list.forEach(x->System.out.println(x));
System.out.println("----------------");
list.forEach(System.out::println);
}
}
a
b
c
----------------
a
b
c
----------------
a
b
c

Predicate用法:

package com.qhong;

import java.util.Arrays;
import java.util.List;
import java.util.function.*;
import java.lang.*; public class Main {
public static void main(String[] args) throws Exception {
List<String> languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp"); System.out.println("Languages which starts with J :");
filter(languages, (str)->str.startsWith("J")); System.out.println("Languages which ends with a ");
filter(languages, ( String str)->str.endsWith("a")); System.out.println("Print all languages :");
filter(languages, (str)->true); System.out.println("Print no language : ");
filter(languages, (str)->false); System.out.println("Print language whose length greater than 4:");
filter(languages, (str)->str.length() > 4);
} public static void filter(List<String> names, Predicate<String> condition) {
names.stream().filter((name) -> (condition.test(name)))
.forEach((name) -> {
System.out.println(name + " ");
});
}
}
Languages which starts with J :
Java
Languages which ends with a
Java
Scala
Print all languages :
Java
Scala
C++
Haskell
Lisp
Print no language :
Print language whose length greater than 4:
Scala
Haskell

code:

package com.qhong;

/**
* Created by qhong on 2017/3/14.
*/
public class Employee {
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} 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 Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} private Integer id;
private String firstName;
private String lastName;
private Integer age; public Employee(Integer id, String firstName, String lastName, Integer age){
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
} @Override
public String toString() {
return "\n["+this.id+","+this.firstName+","+this.lastName+","+this.age+"]";
}
}
package com.qhong;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List; public class Main {
public static void main(String[] args) throws Exception {
List<Employee> employees = getEmployees(); //Sort all employees by first name
employees.sort(Comparator.comparing(e -> e.getFirstName())); //OR you can use below
//employees.sort(Comparator.comparing(Employee::getFirstName)); //Let's print the sorted list
System.out.println(employees);
System.out.println("======================"); Comparator<Employee> comparator = Comparator.comparing(e -> e.getFirstName());
employees.sort(comparator.reversed());
System.out.println(employees);
System.out.println("======================");
//Sorting on multiple fields; Group by.
Comparator<Employee> groupByComparator = Comparator.comparing(Employee::getFirstName)
.thenComparing(Employee::getLastName);
//下面这种方式不行,不知道问题
// Comparator<Employee> groupByComparator=Comparator.comparing(e->e.getFirstName())
// .thenComparing(x->x.getLastName);
employees.sort(groupByComparator);
System.out.println(employees); System.out.println("======================"); //Parallel Sorting 并行排序
Employee[] employeesArray = employees.toArray(new Employee[employees.size()]);
System.out.println(employeesArray);
//Parallel sorting
Arrays.parallelSort(employeesArray, groupByComparator); System.out.println(employeesArray);
} private static List<Employee> getEmployees(){
List<Employee> employees = new ArrayList<>();
employees.add(new Employee(1,"Lokesh", "Gupta", 32));
employees.add(new Employee(2,"Aman", "Sharma", 28));
employees.add(new Employee(3,"Aakash", "Yaadav", 52));
employees.add(new Employee(4,"James", "Hedge", 72));
employees.add(new Employee(5,"David", "Kameron", 19));
employees.add(new Employee(6,"Yash", "Chopra", 25));
employees.add(new Employee(7,"Karan", "Johar", 59));
employees.add(new Employee(8,"Balaji", "Subbu", 88));
employees.add(new Employee(9,"Vishu", "Bissi", 33));
employees.add(new Employee(10,"Lokesh", "Ramachandran", 60));
return employees;
}
}

Output:

[
[3,Aakash,Yaadav,52],
[2,Aman,Sharma,28],
[8,Balaji,Subbu,88],
[5,David,Kameron,19],
[4,James,Hedge,72],
[7,Karan,Johar,59],
[1,Lokesh,Gupta,32],
[10,Lokesh,Ramachandran,60],
[9,Vishu,Bissi,33],
[6,Yash,Chopra,25]]
======================
[
[6,Yash,Chopra,25],
[9,Vishu,Bissi,33],
[1,Lokesh,Gupta,32],
[10,Lokesh,Ramachandran,60],
[7,Karan,Johar,59],
[4,James,Hedge,72],
[5,David,Kameron,19],
[8,Balaji,Subbu,88],
[2,Aman,Sharma,28],
[3,Aakash,Yaadav,52]]
======================
[
[3,Aakash,Yaadav,52],
[2,Aman,Sharma,28],
[8,Balaji,Subbu,88],
[5,David,Kameron,19],
[4,James,Hedge,72],
[7,Karan,Johar,59],
[1,Lokesh,Gupta,32],
[10,Lokesh,Ramachandran,60],
[9,Vishu,Bissi,33],
[6,Yash,Chopra,25]]
======================
[Lcom.qhong.Employee;@7530d0a
[Lcom.qhong.Employee;@7530d0a

http://www.importnew.com/16436.html

http://www.cnblogs.com/figure9/archive/2014/10/24/4048421.html

https://wizardforcel.gitbooks.io/java8-tutorials/content/Java%208%20lambda%20%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html

http://www.codeceo.com/article/learn-java-lambda.html

http://58coding.com/article/detail/24656434620795220

http://www.ezlippi.com/blog/2015/06/java-lambda-expression.html

http://zh.lucida.me/blog/java-8-lambdas-insideout-language-features/

http://howtodoinjava.com/java-8/using-comparator-becomes-easier-with-lambda-expressions-java-8/

Java8 Lambda的更多相关文章

  1. java8 Lambda表达式的新手上车指南(1)

    背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

  2. 【Java学习笔记之三十一】详解Java8 lambda表达式

    Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...

  3. java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口

    背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

  4. java8 快速入门 lambda表达式 Java8 lambda表达式10个示例

    本文由 ImportNew - lemeilleur 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发 ...

  5. JAVA8 Lambda初体验

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.u ...

  6. Java8 lambda表达式10个示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...

  7. java8 Lambda表达式的10个例子(转)

    原文:http://jobar.iteye.com/blog/2023477 Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 收藏代码// ...

  8. Java8 Lambda表达式详解手册及实例

    先贩卖一下焦虑,Java8发于2014年3月18日,距离现在已经快6年了,如果你对Java8的新特性还没有应用,甚至还一无所知,那你真得关注公众号"程序新视界",好好系列的学习一下 ...

  9. Java8 lambda表达式10个示例<转>

    例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runna ...

  10. java8 lambda表达式应用

    1.用lambda表达式实现Runnable非常简单// Java 8之前: new Thread(new Runnable() { @Override public void run() { Sys ...

随机推荐

  1. iOS 根据经纬度计算与地理北极夹角

    http://www.aiuxian.com/article/p-2767848.html #define toDeg(X) (X*180.0/M_PI) /**  * @method 根据两点经纬度 ...

  2. 170802、Elasticsearch5.2.2 安装问题记录

    使用Elasticsearch5.2.2 必须安装jdk1.8 [elsearch@vm-mysteel-dc-search01 bin]$ java -version java version &q ...

  3. java 新手入门课程03

    2017.7.6  java 课堂笔记 1.关于分支; if/else 是基于boolean 值的双分支 Switch  基于数字(包括整数 char byte  枚举, 字符串)类型的多分支  方法 ...

  4. 数字签名中公钥和私钥是什么?对称加密与非对称加密,以及RSA的原理

    http://baijiahao.baidu.com/s?id=1581684919791448393&wfr=spider&for=pc https://blog.csdn.net/ ...

  5. django-mvc

    而对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序.服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理.应用程序则负责具体的逻辑处 ...

  6. Java中参数传递时值传递的机制分析

    参数传递是什么?      在C的函数或是JAVA的方法中,向一个函数或方法内部传递一个参数,比如:   void fun( int num ){     num+=2 ; }   int a = 3 ...

  7. Git版本控制工具安装与配置

    这里太多,我写在这里方便复制: sudo yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-dev ...

  8. 微软官方推出的win10安装或者创建安装u盘的工具

    https://www.microsoft.com/zh-cn/software-download/windows10 下载安装后,可根据提示,一步步的安装win10或者创建安装u盘

  9. Web Services 简介

    通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能.Web Services 脚本平台需支持 XML + HTTP. Web Services 简介 Web Serv ...

  10. mysql key index区别

    看似有差不多的作用,加了Key的表与建立了Index的表,都可以进行快速的数据查询.他们之间的区别在于处于不同的层面上. Key即键值,是关系模型理论中的一部份,比如有主键(Primary Key), ...