Lambda表达式的运用以及函数式接口

Lambda表达式的运用

lambda表达式所运用的场景实际上是基于函数式接口。

1、无参数,无返回值

	@Test
	public void test1() {
		new Thread(()->{
			System.out.println(Thread.currentThread().getName() + "启动");
		},"A").start();
	}

如果在当前类中有一个变量,在lambda中想要获取该变量的值,需要将该变量声明为final
例如:

	@Test
	public void test1() {
		final int i = 1;
		new Thread(()->{
			System.out.println(Thread.currentThread().getName() + i);
		},"A").start();
	}

但是Java8之后,final可以省略。

2、有参数无返回值
典型的使用Consumer类型的接口

	@Test
	public void test2() {
		//如果只有一个参数,该小括号可以不写即 x -> System.out.println(x)
		Consumer<String> consumer = (x) -> System.out.println(x);
		consumer.accept("hello word");
	}
	输出的结果为:hello word

3、有两个参数和返回值

	@Test
	public void test3() {
		Comparator<Integer> com = (x,y) -> {
			System.out.println("比较两个数的大小");
			return Integer.compare(x, y);
		};
		System.out.println(com.compare(5, 2));
	}
	如果有两个或多个语句时,lambda后面一定要加上{  }

如果只要返回指定结果,还可以这样写

	@Test
	public void test4() {
		Comparator<Integer> com = (x,y) -> Integer.compare(x, y);
		System.out.println(com.compare(5, 2));
	}

4种函数式接口

函数式接口是一个接口,只不过该接口中只有一个抽象的方法,使用注解@FunctionInterface修饰
1、Function接口

函数型接口
Function<T,R>{
	R apply(T t);
}

其中T是传入的参数,R是返回的参数

	@Test
	public void test5() {
		Function<Integer, String> fun = (x) -> Integer.toString(x);
		System.out.println(fun.apply(3));
	}
	传入一个Integer的3,返回一个String类型的"3"

2、Consumer接口

消费类型的接口
Consumer<T> {
	void accept(T t);
}

其中T是传入的参数类型

	@Test
	public void test2() {
		Consumer<String> consumer = x -> System.out.println(x);
		consumer.accept("hello word");
	}

3、Supplier接口

供给型接口
Supplier<T>{
	T get();
}

其中T是返回的参数类型

	@Test
	public void test6() {
		Supplier<String> sup = () -> "hello";
		System.out.println(sup.get());
	}
	返回一个String的值

4、Predict接口

断言型接口
Predict<T>{
	boolean test(T t);
}
	@Test
	public void test7() {
		Predicate<String> pre = (x) -> x.equals("a");
		System.out.println(pre.test("a"));//true
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值