java8 function的使用,java8-使用函数式接口

使用函数式接口

Predicate

@FunctionalInterface

interface Predicate{

boolean test(T t);

}

public static List filter(List list,Predicate p){

List ts = new ArrayList<>();

for (T t : list) {

if (p.test(t)) {

ts.add(t);

}

}

return ts;

}

Consumer

@FunctionalInterface

public interface Consumer {

void accept(T t);

}

public static void forEach(List list,Consumer c) {

for (T t : list) {

c.accept(t);

}

}

public static void main(String[] args) {

forEach(Arrays.asList(1,2,3,4,5),i-> System.out.println(i));

}

Function

@FunctionalInterface

public interface Function {

R apply(T t);

}

public static List map(List list, Function f) {

List result = new ArrayList<>();

for (T t : list) {

result.add(f.apply(t));

}

return result;

}

public static void main(String[] args) {

List map = map(Arrays.asList("lambdas", "in", "action"), s -> s.length());

System.out.println(map);

}

Lambdas及函数式接口的例子

例子 对应接口

布尔表达式: (List list) -> list.isEmpty() Predicate>

创建对象: () -> new Apple(10) Supplier

消费一个对象:(Apple a) ->

System.out.println(a.getWeight()); Consumer

从一个对象中选择/提取:(String s )->s.length() Function或

ToIntFunction

合并两个值:(int a, int b)->a*b IntBinaryOperator

比较两个对象:(Apple a1,Apple a2)-> BiFunction

a1.getWeight().compareTo(a2.getWeight()) 或ToIntBiFunction

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值