函数式接口

lamdba表达式需要java1.8支持
(parameters)->expression
(parameters)->statements

//Function<T,R> 入参T 出参R
Function<Integer,Integer> function = (num1) -> num1 + 10;
Integer result = function.apply(10);
System.out.println(result);

//Consumer<T> 入参T 没有出参
Consumer<String> consumer = (p) -> System.out.println(p);
consumer.accept("hello world");
Consumer<Integer> consumer1 = p -> {
		String x = "sdf";
		System.out.println(p + x);
	};
consumer1.accept(assemble);

//Supplier<T> 出参T 没有入参
Supplier<Integer> supplier = () -> 100;
Integer t = supplier.get();
System.out.println(t);

//Predicate<T> 入参T 出参boolean
Predicate<String> predicate = x -> x.endsWith("n");
boolean flag = predicate.test("sn");
System.out.println(flag);

简单举个例子使用:
在集合中每个元素前添加字符 “linux:” function

		 Function<String,String> function = (num1) ->  "linux:" + num1  ;
		 List<String> list = Arrays.asList("rm","cd","cat");
		 list.stream().map(function).forEach(System.out::println);
/** 结果
	linux:rm
	linux:cd
	linux:cat
*/

过滤数据 prodicate 比较数据 comparator

        String[] array = {"CARRY","CATCH","amen","AJAX","daemon","eason","andy","jane"};
        Predicate<String> predicate = x -> x.endsWith("n");
        List<String> list = Arrays.asList(array);
        list.stream().filter(predicate).forEach(System.out::println);
        System.out.println(list.stream().reduce((x,j) -> x+j).get());
        Arrays.sort(array,comparator);
        Arrays.asList(array).forEach(System.out::println);
        /**结果
		amen
		daemon
		eason
		CARRYCATCHamenAJAXdaemoneasonandyjane
		AJAX
		CARRY
		CATCH
		amen
		andy
		daemon
		eason
		jane
	*/

制造数据 Supplier

Supplier<String> supplier = () -> "hello world!";
System.out.println(supplier.get());
/**结果
hello world!
*/

Map Reduce 使用

map的作用是将一个对象变为另外一个,而reduce实现的则是将所有值合并为一个
 	List<Double> list1 = Arrays.asList(10.0,20.0,30.0);
        list1.stream().map(m -> m + 0.05).forEach(System.out::println);
        Double aDouble = list1.stream().map(m -> m + 0.01).reduce((i,j)->i+j).get();
        System.out.println(aDouble);
//map类型:将每个元素经过处理转换成另外一个类型(可以是同类型)
  	Predicate<String> predicate = (a)-> a.equals("科比");
  	List<String> names = Arrays.asList("姚明","科比","乔丹","詹姆斯");
  	names.stream().filter(predicate).forEach(System.out::println);
  	names.stream().map(String::new).forEach(System.out::println);
  	System.out.println("###################################");
  	List<String> dbls = Arrays.asList("11","22","33","44");
  	dbls.stream().mapToDouble(Double::parseDouble).forEach(System.out::println);
  	System.out.println("###################################");
  	dbls.stream().mapToInt(Integer::parseInt).forEach(System.out::println);
  	System.out.println("###################################");
  	dbls.stream().mapToLong(Long::parseLong).forEach(System.out::println);
/**结果
科比
姚明
科比
乔丹
詹姆斯
###################################
11.0
22.0
33.0
44.0
###################################
11
22
33
44
###################################
11
22
33
44
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值