lambda表达式

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

  

posted @ 2018-01-29 18:37  清风已来  阅读(219)  评论(0编辑  收藏  举报