From cb71841c2f4153e1c7cd43413fca41fdf8ad0b87 Mon Sep 17 00:00:00 2001 From: DEMAO <987854018@qq.com> Date: Tue, 12 Oct 2021 16:41:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=8A=BD=E5=8F=96=E8=BF=87=E6=BB=A4=E5=99=A8=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/hcsp/polymorphism/User.java | 95 +++++++++++++------ 1 file changed, 68 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/github/hcsp/polymorphism/User.java b/src/main/java/com/github/hcsp/polymorphism/User.java index 51c95dc..43d2cda 100644 --- a/src/main/java/com/github/hcsp/polymorphism/User.java +++ b/src/main/java/com/github/hcsp/polymorphism/User.java @@ -1,14 +1,21 @@ package com.github.hcsp.polymorphism; +import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput; + import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class User { - /** 用户ID,数据库主键,全局唯一 */ + /** + * 用户ID,数据库主键,全局唯一 + */ private final Integer id; - /** 用户名 */ + /** + * 用户名 + */ private final String name; public User(Integer id, String name) { @@ -24,40 +31,74 @@ public String getName() { return name; } + + + +/* public static class 偶数 implements 判断条件 { + @Override + public boolean 判断用户满足条件(User user) { + return user.id % 2 == 0; + } + }*/ +/* public static class 姓张 implements 判断条件 { + @Override + public boolean 判断用户满足条件(User user) { + return user.name.startsWith("张"); + } + }*/ + // 过滤ID为偶数的用户 public static List filterUsersWithEvenId(List users) { - List results = new ArrayList<>(); - for (User user : users) { + return filter(users, new Predicate() { + @Override + public boolean test(User user) { + return user.id % 2 == 0 ; + } + }); + } + /* List results = new ArrayList<>(); //结果接收器 + for (User user : users) { // for遍历查找 if (user.id % 2 == 0) { - results.add(user); + results.add(user); //符合条件 结果+到列表中去 } } - return results; - } + return results; //返回新的列表 + }*/ - // 过滤姓张的用户 - public static List filterZhangUsers(List users) { - List results = new ArrayList<>(); - for (User user : users) { - if (user.name.startsWith("张")) { - results.add(user); + // 过滤姓张的用户 + public static List filterZhangUsers (List users) { + return filter(users, new Predicate() { + @Override + public boolean test(User user) { + return user.name.startsWith("张"); } - } - return results; + }); } - // 过滤姓王的用户 - public static List filterWangUsers(List users) { - List results = new ArrayList<>(); - for (User user : users) { - if (user.name.startsWith("王")) { - results.add(user); + // 过滤姓王的用户 + public static List filterWangUsers (List < User > users) { + return filter(users, new Predicate() { + @Override + public boolean test(User user) { + return user.name.startsWith("王"); + } + }); + } + // 你可以发现,在上面三个函数中包含大量的重复代码。 + // 请尝试通过Predicate接口将上述代码抽取成一个公用的过滤器函数 + // 并简化上面三个函数 + public static List filter(List users, Predicate predicate){ + List results = new ArrayList<>(); + for (User user : users) { + if (predicate.test(user)) { + results.add(user); + // System.out.println(user.id); + } } + return results; } - return results; - } - // 你可以发现,在上面三个函数中包含大量的重复代码。 - // 请尝试通过Predicate接口将上述代码抽取成一个公用的过滤器函数 - // 并简化上面三个函数 - public static List filter(List users, Predicate predicate) {} + +/* public static void main(String[] args) { + filterUsersWithEvenId(Arrays.asList(new User(1,"李"),new User(2,"王"))); + }*/ } From 57cb7261b97d5d9b9328c0d4ebefab266800c613 Mon Sep 17 00:00:00 2001 From: DEMAO <987854018@qq.com> Date: Tue, 12 Oct 2021 16:55:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=8A=BD=E5=8F=96=E8=BF=87=E6=BB=A4=E5=99=A8=E5=87=BD=E6=95=B0?= =?UTF-8?q?=20=E8=AE=A2=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/hcsp/polymorphism/User.java | 60 +++---------------- 1 file changed, 8 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/github/hcsp/polymorphism/User.java b/src/main/java/com/github/hcsp/polymorphism/User.java index 43d2cda..2431f63 100644 --- a/src/main/java/com/github/hcsp/polymorphism/User.java +++ b/src/main/java/com/github/hcsp/polymorphism/User.java @@ -1,9 +1,6 @@ package com.github.hcsp.polymorphism; -import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput; - import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.function.Predicate; @@ -31,63 +28,25 @@ public String getName() { return name; } - - - -/* public static class 偶数 implements 判断条件 { - @Override - public boolean 判断用户满足条件(User user) { - return user.id % 2 == 0; - } - }*/ -/* public static class 姓张 implements 判断条件 { - @Override - public boolean 判断用户满足条件(User user) { - return user.name.startsWith("张"); - } - }*/ - // 过滤ID为偶数的用户 public static List filterUsersWithEvenId(List users) { - return filter(users, new Predicate() { - @Override - public boolean test(User user) { - return user.id % 2 == 0 ; - } - }); + return filter(users, user -> user.id % 2 == 0); } - /* List results = new ArrayList<>(); //结果接收器 - for (User user : users) { // for遍历查找 - if (user.id % 2 == 0) { - results.add(user); //符合条件 结果+到列表中去 - } - } - return results; //返回新的列表 - }*/ + // 过滤姓张的用户 - public static List filterZhangUsers (List users) { - return filter(users, new Predicate() { - @Override - public boolean test(User user) { - return user.name.startsWith("张"); - } - }); + public static List filterZhangUsers(List users) { + return filter(users, user -> user.name.startsWith("张")); } // 过滤姓王的用户 - public static List filterWangUsers (List < User > users) { - return filter(users, new Predicate() { - @Override - public boolean test(User user) { - return user.name.startsWith("王"); - } - }); + public static List filterWangUsers(List users) { + return filter(users, user -> user.name.startsWith("王")); } // 你可以发现,在上面三个函数中包含大量的重复代码。 // 请尝试通过Predicate接口将上述代码抽取成一个公用的过滤器函数 // 并简化上面三个函数 - public static List filter(List users, Predicate predicate){ + public static List filter(List users, Predicate predicate) { List results = new ArrayList<>(); for (User user : users) { if (predicate.test(user)) { @@ -97,8 +56,5 @@ public static List filter(List users, Predicate predicate){ } return results; } - -/* public static void main(String[] args) { - filterUsersWithEvenId(Arrays.asList(new User(1,"李"),new User(2,"王"))); - }*/ } +