java function 使用_Java 8 Function&BiFunction接口使用

java8 Funciton和BiFunction都是功能性接口,Function包含一个入参(T),一个出参(R),输入输出可以是不不同的类型,BiFunction包含两个入参T和R,一个出参R。

1、Function

下面这个例子展示了一个输入参数 String类型,然后输出一个 Integer类型

package com.cattles.function;

import java.util.function.Function;

/**

* @author cattle - 稻草鸟人

* @date 2020/3/1 下午5:40

*/

public class Java8Function1 {

public static void main(String[] args) {

Function func = x -> x.length();

Integer apply = func.apply("cattle");

System.out.println(apply);

}

}

输出:

6

2、Function addThen和compose

package com.cattles.function;

import java.util.function.Function;

/**

* @author cattle - 稻草鸟人

* @date 2020/3/1 下午5:45

*/

public class Java8Function2 {

public static void main(String[] args) {

Function func1 = x -> x.length();

Function func2 = x -> x * 2;

Integer ret = func1.andThen(func2).apply("cattle");

System.out.println(ret);

Integer ret2 = func2.compose(func1).apply("cattle");

System.out.println(ret2);

}

}

输出:

12

12

**问题:**思考addThen和compose的区别

3、Function复杂一些的例子

package com.cattles.function;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Base64;

import java.util.List;

import java.util.function.Function;

/**

* @author cattle - 稻草鸟人

* @date 2020/3/1 下午10:43

*/

public class Java8Function3 {

public static void main(String[] args) {

Java8Function3 obj = new Java8Function3();

List list = Arrays.asList("java", "python", "C#", "PHP", "javascript");

List ret = obj.list(list, obj::base64);

ret.forEach(System.out::println);

}

public List list(List list, Function function) {

List ret = new ArrayList<>();

for (T t : list) {

ret.add(function.apply(t));

}

return ret;

}

public String base64(String st) {

return Base64.getEncoder().encodeToString(st.getBytes());

}

}

输出:

amF2YQ==

cHl0aG9u

QyM=

UEhQ

amF2YXNjcmlwdA==

4、BiFunction

package com.cattles.function;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.function.BiFunction;

/**

* @author cattle - 稻草鸟人

* @date 2020/3/1 下午10:54

*/

public class Java8BiFunction1 {

public static void main(String[] args) {

BiFunction func = (T, U) -> T * U;

System.out.println(func.apply(3, 4));

Java8BiFunction1 obj = new Java8BiFunction1();

List list1 = Arrays.asList("a", "b", "c");

List list2 = Arrays.asList(1, 2, 3);

List result = obj.listCombiner(list1, list2, (a, b) -> a + b);

System.out.println(result);

}

private List listCombiner(

List list1, List list2, BiFunction combiner) {

List result = new ArrayList<>();

for (int i = 0; i < list1.size(); i++) {

result.add(combiner.apply(list1.get(i), list2.get(i)));

}

return result;

}

}

输出:

12

[a1, b2, c3]

5、BiFunction addThen

package com.cattles.function;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.function.BiFunction;

import java.util.function.Function;

/**

* @author cattle - 稻草鸟人

* @date 2020/3/1 下午11:02

*/

public class Java8BiFunction2 {

public static void main(String[] args) {

BiFunction func1 = (T, U) -> T + U;

Function func2 = x -> x + " Java";

System.out.println(func1.andThen(func2).apply("I", " Love"));

List list1 = Arrays.asList("a", "b", "c");

List list2 = Arrays.asList("1", "2", "3");

Java8BiFunction2 obj = new Java8BiFunction2();

List result = obj.listCombiner(list1, list2, String::concat);

System.out.println(result);

}

private List listCombiner(

List list1, List list2, BiFunction combiner) {

List result = new ArrayList<>();

for (int i = 0; i < list1.size(); i++) {

result.add(combiner.apply(list1.get(i), list2.get(i)));

}

return result;

}

}

输出:

I Love Java

[a1, b2, c3]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值