package lambda;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
/**
* lambda表达式
* JDK1.8之后推出的一个新特性
*
* lambda特性也是编译器认可的,用来简化对于仅有一个
* 方法的匿名内部类的创建,但是表一起在编译程序后
* 还是会将lambda改为传统形式。
* lambda语法:
* 基本组成部分
* ([arg1,arg2....])->{语句...}
* 若语句块只有一句,则{}可以省略。
* 注:在语法描述中,[]用于表示里面的内容可有可无
*
*
*/
public class Demo {
public static void main(String[] args) {
// Runnable runn =new Runnable() {
// public void run() {
// System.out.println("啦啦啦");
// }
// };
//下面代码 Runnable 等同于上面的
Runnable runn =()-> System.out.println("啦啦啦");
Thread t =new Thread(runn);
t.start();
//创建10个随机范围在100以内的数
//给它从大往下排序排序
Random random =new Random();
List<Integer> list =new ArrayList<Integer>();
for(int i=0 ;i<10;i++) {
list.add(random.nextInt(100));
}
System.out.println(list);
Collections.sort(list);//从小往大排序
System.out.println(list);
// Collections.sort(list, new Comparator<Integer>() {
// public int compare(Integer o1, Integer o2) {
// return o2-o1;
// }
// });
/**
* lambda表达式实现方法中若只有一句话,且含有return时
* 忽略i{}的同时也要忽略return,若该方法有参数,那么不需要
* 定义参数的类型
*/
//下面代码等同于上面注释的代码
Collections.sort(list,(o1,o2)->o2-o1);//从大往小排序
System.out.println(list);
List<String> list1 =new ArrayList<String>();
list1.add("one");
list1.add("two");
list1.add("three");
list1.add("four");
list1.add("five");
// for(String e :list1) {
// System.out.println(e);
// }
//
//用lambda方法可以遍历集合元素,等同于上面的方法
list1.forEach(e->System.out.println(e));
}
}