Java8内置四大函数

1: 消费型接口,Consumer
void accept(T t)接口实例:
需求,将金额处理后输出

@Test
	public void testConsumer(){
		happy(10000,(money) -> {
			money = money/100+20;
			System.out.println("逛街,消费 "+ money + " 元");
		});
	}
	public void happy(double money , Consumer<Double> con){
		con.accept(money);
	}

2: 供给型接口 Supplier : T get()
需求: 生成一个整型集合

@Test
	public void testSupplier(){
		List<Integer> list = getNumList(10,()-> (int)(Math.random()* 100));
		System.out.println("testSupplier: "  + list);
	}
	
	//产生指定个数单的整数,存入集合中
	public List<Integer> getNumList( int num ,Supplier<Integer> sup){
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < num; i++) {
			list.add(sup.get());
		}
		return list;
	}

3 函数型接口 Function<T,R>
需求: 将字符串去空格

@Test
	public void testFunction(){
		String str = "     \t\t\t\t   江西新余仙女湖     ";
		String resut = strHandler(str, (s) -> s.trim());
		System.out.println(resut);
	}
	
	public String strHandler(String str , Function<String,String> function){
		return function.apply(str);
	}

4: Predicate : 断言性接口
需求: 将含有ang的省份名筛选出来

@Test
	public void testPredicate(){
		List<String> list = Arrays.asList("jiangxi" ,"hunan","shanghai","beijing" ,"henan","hebei","jiangsu" ,"zhejiang","yunan");
		List<String> result = filterStr(list,(str) -> str.contains("ang"));
		System.out.println(result);
	}
	public List<String> filterStr(List<String> list , Predicate<String> pre){
		List<String> resList = new ArrayList<>();
		for (String string : list) {
			if(pre.test(string)){
				resList.add(string);
			}
		}
		return resList;
	} 

5: 使用方式
如果是对数据进行处理,但不需要返回,视为消费。
生成一个新的数据返回,视为生产。
将数据进行处理后返回,视为函数
对数据进行逻辑判断处理,视为断言

猜你喜欢

转载自blog.csdn.net/u012224510/article/details/84750924