Java 8的新特性-四大内置函数式接口
- Consumer :消费型接口 ;
- Supplier :供给型接口 T get();
- Function<T,R> :函数型接口 R apply(T t);
- Predicate :断言型接口 boolean test(T t);
一、消费型接口
class DemoApplicationTests {
@Test
void test01(){
surf(10,m-> System.out.println("我去上网花了"+m+"元"));
}
public void surf( double money,Consumer<Double> consumer){
consumer.accept(money);
}
执行结果
我去上网花了10.0元
二、函数型接口
@Test
public void test(){
String s1 = setString("\t\t\t 666666 ", (s) -> s.trim());
System.out.println(s1);
}
public String setString(String str , Function< String ,String > function){
return function.apply(str);
}
执行结果
666666
三、供给型接口
@Test
public void test(){
List<Integer> getnumber = getnumber(7, () -> (int) (Math.random() * 100));
for (Integer integer : getnumber) {
System.out.println(integer);
}
}
public List<Integer> getnumber ( int in , Supplier<Integer> supplier){
List<Integer> list=new ArrayList<>();
for (int i=0 ;i<in ;i++){
Integer integer = supplier.get();
list.add(integer);
}
return list;
}
执行结果
75
37
84
69
69
85
10 //执行结果随机
四、断言型接口
@Test
public void test() {
List<String> list = Arrays.asList("hello","word","qwertyui","oo","ppp");
List<String> string = getString(list, s -> s.length() > 3);
for (String s : string) {
System.out.println(s);
}
}
public List<String> getString (List<String> strings , Predicate<String> predicate){
List<String> list = new ArrayList<>();
for (String s : strings) {
if(predicate.test(s)) {
list.add(s);
}
}
return list;
}
}
执行结果
hello
word
qwertyui