【有书共读】Java攻略:function其他三个接口
Java.until.function包下除了Consumer接口还有Supplier接口,Predicate接口和Function接口
Supplier接口
Supplier接口不包含任何静态方法和默认方法,它只有一个抽象方法 T get()方法
Math.random方法可以赋给Supplier并随时调用
Logger lo = new Logger("..."); DoubleSupplier bs = new DoubleSupplier(){ public double getAsDouble(){ return Math.random; } }; lo.info(bs);
Supplier主要作用就是延迟执行。
Predicate接口
Predicate主要用于流的筛选,给定一个包含若干项的流,Stream接口中的filter方法传入一个predicate并返回一个新的流它只包含给定谓词的项
如下一个查找给定长度的字符串
public String getNameofLength(int length,String... name){ return Arrays.stream(name).filter(s->s.length()==length).collect(Collectors.joining(",")) }
以上代码就可以完成筛选给定谓词的项
Function接口
Function接口包含单一抽象方法apply他可以T类型的参数输入转换成R类型的泛型输出。
最常用的就是steam.map方法
List<String> names = Arrays.asList("Tom","Ben","Inara","Jayne"); Lsit namesLengths = names.stream().map(new Function<String,Integer>(){ public Integer apply(String s){ return s.length(); } });