/**
* 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;
}
}