Java的Lambda表达式

Lambda表达式是java8的新特性,支持代码块做为方法参数,至关于Lambda表达式代替匿名内部类建立对象Lambda代码块将会代替实现抽象方法的方法体,lambda表达式就至关于一个匿名的方法。html

1.Lambda表达式的语法:(形参列表)_>{   代码块};行参列表容许省略修饰符,若是只有一个形参,也能够省略括号;箭头,必须经过英文中的下划线和大于号组成;代码块 ,若是只有一条能够不用写花括号,只有一条return返回语句,能够省略return。html5

import java.util.Arrays;
import java.util.List;

public class Demo06 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] s = { "lll", "kkk", "mmm", "ooo", "hhh" };
		List<String> s1 = Arrays.asList(s);
		System.out.println(s1);
		for (String temp : s) {
			System.out.println(temp);
		}
		System.out.println("######");
		// lamdba表达式
		s1.forEach(temp -> {
			System.out.println(temp);
		});
		System.out.println("-------");
		s1.forEach(System.out::println);
	}
}

2.Lambda表达式与函数式接口,Lambda表达式的类型,也被称为“目标类型”,Lambda表达式的目标类型必须是“函数式接口”。函数式接口表明的是一个抽象方法的接口。Runable、ActionListener等都是函数接口。lambda表达式的结果是被当作对象的。java

public class Demo07 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Thread(){
			public void run() {
				System.out.println("内部类的实现");
			};
		}.start();
		new Thread(() -> {System.out.println("lambda表达式");}).start();
		System.out.println("$$$$$$$$$$");
		Runnable a1=new Runnable() {	
			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.out.println("匿名内部类");
			}
		};
		Runnable a2=()->{ System.out.println("Lamdba表达式");};
        a1.run();
        a2.run();
	}
}

3.使用Lambda表达式调用Arrays类的方法,由于Arrays类有些方法须要Comparator、XxxOperator、XxxFunction等接口的实例,这些接口都是函数式接口,由于lambda能够调用Arrays的方法。android

import java.util.Arrays;

public class Demo08 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] arr1 = new String[] { "android", "c#", "c++", "java", "html5" };
		Arrays.parallelSort(arr1, (a1, a2) -> a1.length() - a2.length());
		System.out.println(Arrays.toString(arr1));

		int[] arr2 = new int[] { 3, 2, 6, 3, 2, 1 };
		Arrays.parallelPrefix(arr2, (a1, a2) -> a1 + a2);
		System.out.println(Arrays.toString(arr2));

		long[] arr3 = new long[5];
		Arrays.parallelSetAll(arr3, a1 -> a1 * 6);
		System.out.println(Arrays.toString(arr3));
	}
}
相关文章
相关标签/搜索