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)); } }