lambda 简单使用demo

lambda个人理解:

1.lambda简化了录入代码,但未简化

2.lambda使用一般针对只有一个抽象方法的接口如Runnable, Consumer, Predicate等的匿名类的创建

 

package main.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Predicate;

import org.junit.jupiter.api.Test;

public class FunctionTest {

	/**
	 * lambda expression test
	 * summary: lambda is anonymous method , used to replace interface class with one abstract method.
	 * @see https://www.cnblogs.com/franson-2016/p/5593080.html
	 */
	@Test
	public void lambdaTest() {
		String[] names = { "zhang san", "li si", "wang wu" };
		List<String> nameList = Arrays.asList(names);

		// case one: traversal List
		// replace anonymous inner class
		nameList.forEach(new Consumer<String>() {
			@Override
			public void accept(String t) {
				System.out.println(t);
			}
		});

		// by lamdda style : name is parameter, -> is "gose to" ,
		// System.out.println(name) is action
		nameList.forEach((name) -> System.out.println(name));

		// case two: set domain
		List<Staff> staffs = new ArrayList<Staff>();
		/*nameList.forEach(new Consumer<String>() {
			@Override
			public void accept(String name) {
				Staff s = new Staff();
				s.setName(name);
				s.setSalary(1000d + name.charAt(0));
				staffs.add(s);
			}
		});*/

		nameList.forEach((name) -> {
			staffs.add(new Staff(name,1000d + name.charAt(0)));
		});

		// filter salary more then 1119
		Predicate<Staff> salaryFilter = (p) -> p.salary > 1119d;
		
		Optional<Staff> findFirst = staffs.stream().filter(salaryFilter).findFirst();
		if(findFirst.isPresent()) {
			System.out.println(findFirst.get().toString());
		}

	}

	class Staff {
		private String name;
		private Double salary;
		
		Staff(){}
		
		Staff(String name, Double salary){
			this.name = name;
			this.salary = salary;
		}
		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public Double getSalary() {
			return salary;
		}

		public void setSalary(Double salary) {
			this.salary = salary;
		}

		@Override
		public String toString() {
			return "Staff [name=" + name + ", salary=" + salary + "]";
		}
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值