代码
提交代码
import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; /** * Java 内置4大核心函数式接口 —— 断言型接口 * Predicate<T> boolean test(T t) * @author colorful@TaleLin */ public class FunctionalInterfaceDemo3 { /** * 根据 Predicate 断言的结果,过滤 list 中的字符串 * @param list 待过滤字符串 * @param predicate 提供规则的接口实例 * @return 过滤后的列表 */ public static List<String> filterStringList(List<String> list, Predicate<String> predicate) { // 过滤后的字符串列表 ArrayList<String> arrayList = new ArrayList<>(); for (String string: list) { if (predicate.test(string)) { // 如果 test 是 true,则将元素加入到过滤后的列表中 arrayList.add(string); } } return arrayList; } public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("Java"); arrayList.add("PHP"); arrayList.add("Python"); arrayList.add("JavaScript"); System.out.println("过滤前:"); System.out.println(arrayList); List<String> filterResult = filterStringList(arrayList, new Predicate<String>() { @Override public boolean test(String s) { // 返回字符串中是否包含 P return s.contains("P"); } }); System.out.println("过滤后:"); System.out.println(filterResult); } }
运行结果