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);
package lambda; import org.junit.Test; 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; public class TestLambda3 { //消費型接口 @Test public void test1() { happy(1000, m -> System.out.println("買化妝品消費" + m + "元")); } public void happy(double m, Consumer<Double> consumer) { consumer.accept(m); } //供給型接口 @Test public void test2() { List<Integer> result = getNumberList(10, () -> (int) (Math.random() * 100)); for (Integer integer : result) { System.out.println(integer); } } //產生指定個數的整數(100以內),並將他們放到集合中去 public List<Integer> getNumberList(int num, Supplier<Integer> supplier) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < num; i++) { Integer temp = supplier.get(); list.add(temp); } return list; } //函數型接口 //用於處理字符串 @Test public void test3() { System.out.println(strHandler("today", str -> str.toUpperCase())); } public String strHandler(String str, Function<String, String> function) { return function.apply(str); } //斷言型接口 @Test public void test4() { List<String> strList = Arrays.asList("asgdigasi", "shdih", "xs", "hdshasd", "c"); List<String> list = filterList(strList, (x) -> x.length() > 3); for (String s : list) { System.out.println(s); } } //將滿足條件的字符串放到集合中去 public List<String> filterList(List<String> strList, Predicate<String> predicate) { List<String> list = new ArrayList<>(); for (String s : strList) { if(predicate.test(s)){ list.add(s); } } return list; } }
Java8新特性之Lambda表達式(三)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.