idea https://www.ajihuo.com/idea/4222.html
Java8 内置的四大核心函数式接口
Consumer :消费性接口
void accept(T t);
@Test
public void test9(){
happy(100,(x)-> System.out.println("俞占喜欢大保健吗?每次都花费"+x+"元"));
}
public void happy(double m,Consumer consumer){
consumer.accept(m);
}
### Supplier:供给型接口
T get();
//Supplier<T> 供给型接口:
@Test
public void test10(){
List<Integer> list=getNumList(10,()->(int)(Math.random()*10));
list.forEach(System.out::println);
}
/*产生指定个数的整数,并放入集合中去*/
public List<Integer> getNumList(int num, Supplier<Integer> supplier){
List<Integer> list=new ArrayList<>();
for (int i = 0; i <num ; i++) {
Integer integer=supplier.get();
list.add(integer);
}
return list;
}
Funcation<T,R>:函数型接口
R apply(T t);
/*函数型接口*/
@Test
public void test11(){
String m=functionStr("\t\t\t 我爱北京天安门,天安门上广场飞,伟大领域 ",(str)->str.trim());
System.out.println(m);
}
/*字符串去空格*/
public String functionStr(String str, Function<String,String> function){
return function.apply(str);
}
Predicate: 断言型接口
boolean test(T t);
@Test
public void test12(){
List<String> list=Arrays.asList("hahahah","你是皇上","白人自新","校下","?");
List<String> predicate = predicate(list, (x) -> x.length() > 2);
predicate.forEach(System.out::println);
}
/*将满足条件的字符串放到集合中去*/
public List<String> predicate(List<String> list, Predicate<String> predicate){
List<String> list1=new ArrayList<>();
for (String str:list) {
if (predicate.test(str)){
list1.add(str);
}
}
return list1;
}