java中Lambda表達式相關的四大內置核心函數式接口


知識點:java8中四大內置核心函數式接口

/**
* 1. Consumer<T>:消費型接口
* void accept(T t);
*
* 2. Supplier<T> :供給型接口
* T get();
*
* 3. Function<T,R>: 函數型接口
* R apply(T t);
*
* 4. Predicate<T>: 斷言型接口
* boolean test(T t)
* **/
public class TestLambda {

//1.Consumer<T>:消費型接口 void accept(T t);
@Test
public void test(){
shopping(1000,(x)-> System.out.println("今天購物發了"+x+"元"));
}
public void shopping(double money, Consumer<Double> con){
con.accept(money);
}

//2.Supplier<T> :供給型接口 T get();
@Test
public void test2(){
List<Integer> numList=getNumList(3,()->(int)(Math.random()*10));
for (Integer n:numList
) {
System.out.println(n);
}
}
//產生指定個數的整數,放到集合中並返回
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;
}


//3.Function<T,R>: 函數型接口 R apply(T t);
@Test
public void test3(){
String newStr= handlerStr("helloworld",(str)->str.substring(3,6));
System.out.println(newStr);
}
//處理字符串
public String handlerStr(String str, Function<String,String> fun){
return fun.apply(str);
}

//4.Predicate<T>: 斷言型接口 boolean test(T t)
@Test
public void test4(){
List<String> list= Arrays.asList("idea","eclipse","predicate","function");
List<String> returnList= filterStr(list,(str)->str.length()>4);
for (String str:returnList
) {
System.out.println(str);
}
}
//將滿足條件的字符串,放到集合中
public List<String> filterStr(List<String> list, Predicate<String> pre){
List<String> newList=new ArrayList<>();
for (String str:list
) {
if(pre.test(str)){
newList.add(str);
}
}
return newList;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM