1. 程式人生 > >/*Java8內建的四大核心函式式介面

/*Java8內建的四大核心函式式介面

package com.greatest.Java8;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

import org.junit.Test;

public class TestLambda {
    /*Java8內建的四大核心函式式介面 
	   Consumer<T>:消費型介面
	      void  accept(T t);
     * Supplier<T>:供給型介面
     * T get()
     * Function<T,R> 函式型介面
     *    R   apply(T t)
     * Predicate<T>:斷言型介面
     *   boolean  test(T  t)
     * */
	//predicate<T>  斷言型介面
	//需求將滿足條件的字串放入集合中、
	public List<String > filterStr(List<String > list,Predicate<String> pre){
		List<String > strList=new ArrayList<>();
		for(String str:list){
			if(pre.test(str)){
				strList.add(str);
			}
		}
		return strList;
	}
	@Test
	public void  Test(){
		List<String > list=Arrays.asList("Hello","what","String","Greatest","ok","ojbk");
		List<String> strList=filterStr(list, (s)->s.length()>2);
		   for(String str:strList){
			   System.out.println(str);
		   }
	}
	//Function<T,R> 函式型介面
	//需求用於處理字串
	public  String  strHandler(String str,Function<String,String> fun){
		return fun.apply(str);
	}
	
	
	@Test
	public  void  Test2(){
		String newStr=strHandler("\t\t\t\t   格瑞斯    ",(str)->str.trim());
		System.out.println(newStr);
		String newStr1=strHandler("abcdefghijklmnopqrstuvwxyz    ",(str)->str.toUpperCase());
		System.out.println(newStr1);
		String newStr2=strHandler("\t\t\t\t  格瑞斯    ",(str)->str.substring(6,10));
		System.out.println(newStr2);
	}
	//Supplier<T>  供給型介面
	//需求 :產生⑩個隨機數  放入集合中
	public List<Integer> getNumber(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;
	}
	@Test
	public  void  test3(){   //100以內的十個數
		List<Integer>  numList=getNumber(10, ()->(int)(Math.random() * 100));
		for(Integer num:numList){
			System.out.println(num);
		}
	}
	//Consumer<T>消費性介面
	@Test
	public  void  Test4(){
		happy(10000,(m)->System.out.println("您已消費:"+m+"元"));
	}
	public  void  happy(double money,Consumer<Double> con){
		con.accept(money);
	}
	
}