diff --git a/src/main/java/com/github/hcsp/polymorphism/User.java b/src/main/java/com/github/hcsp/polymorphism/User.java index 51c95dc..4ba068f 100644 --- a/src/main/java/com/github/hcsp/polymorphism/User.java +++ b/src/main/java/com/github/hcsp/polymorphism/User.java @@ -26,38 +26,28 @@ public String getName() { // 过滤ID为偶数的用户 public static List filterUsersWithEvenId(List users) { - List results = new ArrayList<>(); - for (User user : users) { - if (user.id % 2 == 0) { - results.add(user); - } - } - return results; + return filter(users,u->u.getId()%2==0); } // 过滤姓张的用户 public static List filterZhangUsers(List users) { - List results = new ArrayList<>(); - for (User user : users) { - if (user.name.startsWith("张")) { - results.add(user); - } - } - return results; + return filter(users,u->u.name.startsWith("张")); } // 过滤姓王的用户 public static List filterWangUsers(List users) { - List results = new ArrayList<>(); - for (User user : users) { - if (user.name.startsWith("王")) { - results.add(user); - } - } - return results; + return filter(users,u->u.name.startsWith("王")); } // 你可以发现,在上面三个函数中包含大量的重复代码。 // 请尝试通过Predicate接口将上述代码抽取成一个公用的过滤器函数 // 并简化上面三个函数 - public static List filter(List users, Predicate predicate) {} + public static List filter(List users, Predicate predicate) { + List resultat=new ArrayList<>(); + for(User u:users){ + if(predicate.test(u)){ + resultat.add(u); + } + } + return resultat; + } }