/**
* java內置的4大核心函數式接口
* <p>
* 消費型接口Consumer<T> void accept(T t);
* 供給型接口Supplier<T> T get();
* 函數型接口Function<T,R> R apply(T t);
* 斷定型接口Predicate<T> boolean Test(T t);
*/
public class FunctionalTest {
/**
* 消費型接口Consumer<T> void accept(T t);
*/
@Test
public void test() {
//lambda
accept(500, consumer -> System.out.println("天上人間礦泉水" + consumer + "一瓶"));
}
public void accept(double money, Consumer<Double> consumer) {
consumer.accept(money);
}
/**
* contains(),該方法是判斷字符串中是否有子字符串。如果有則返回true,如果沒有則返回false。
* 斷定型接口Predicate<T> boolean Test(T t);
*/
@Test
public void test2() {
List<String> strings = Arrays.asList("東京", "西京", "南京", "北京", "河南");
List<String> list1 = filterString(strings, new Predicate<String>() {
@Override
public boolean test(String s) {
return s.contains("京");
}
});
System.out.println(list1);
System.out.println("****************************************");
List<String> list = filterString(strings, predicate -> predicate.contains("南"));
System.out.println(list);
}
//根據給定的規則,過濾集合中的字符串,此規則由Predicate的方法決定
public List<String> filterString(List<String> list, Predicate<String> predicate) {
ArrayList<String> strings = new ArrayList<>();
for (String s:list){
if(predicate.test(s)){
strings.add(s);
}
}
return strings;
}
}