Java8内置的四大核心函数式接口
Consumer < T > :消费型接口
void accept ( T t) ;
Supplier < T > :供给型接口
T get ( ) ;
Function < T , R > :函数型接口
R apply ( T t) ;
Predicate < T > :断言型接口
boolean test ( T t) ;
示例
Consumer
@Test
public void test1 ( ) {
happy ( 9000.0 , ( m) -> System . out. println ( "我希望一年后我的薪资能在" + m + "以上" ) ) ;
}
public void happy ( double money, Consumer < Double > con) {
con. accept ( money) ;
}
Supplier
@Test
public void test2 ( ) {
List < Integer > numList = getNumList ( 20 , ( ) -> ( int ) ( Math . random ( ) * 100 ) ) ;
System . out. println ( numList) ;
}
public List < Integer > getNumList ( int num, Supplier < Integer > sup) {
List < Integer > list = new ArrayList < > ( ) ;
for ( int i = 0 ; i < num; i++ ) {
Integer n = sup. get ( ) ;
list. add ( n) ;
}
return list;
}
Function
@Test
public void test3 ( ) {
String newStr = strHandler ( "\t \t \t 就业难。。" , ( str) -> str. trim ( ) ) ;
System . out. println ( newStr) ;
Integer len = strHandler2 ( "你你你" , ( str) -> str. length ( ) ) ;
System . out. println ( len) ;
}
public String strHandler ( String str, Function < String , String > fun) {
return fun. apply ( str) ;
}
public Integer strHandler2 ( String str, Function < String , Integer > fun) {
return fun. apply ( str) ;
}
Predicate
@Test
public void test4 ( ) {
List < String > stringList = Arrays . asList ( "Hello" , "Nice" , "good" , "www" , "ok" ) ;
List < String > stringList1 = filterStr ( stringList, ( x) -> x. length ( ) > 3 ) ;
System . out. println ( stringList1) ;
}
public List < String > filterStr ( List < String > list, Predicate < String > pre) {
List < String > strList = new ArrayList < > ( ) ;
for ( String s : list) {
if ( pre. test ( s) ) {
strList. add ( s) ;
}
}
return strList;
}