From 2347b5fb65f69861c590cda834342a0f5c2a52c7 Mon Sep 17 00:00:00 2001 From: baki Date: Sun, 6 Apr 2025 00:43:22 +0900 Subject: [PATCH 1/7] =?UTF-8?q?refactor:=20=EB=9E=8C=EB=8B=A4=20=EC=8B=A4?= =?UTF-8?q?=EC=8A=B5=201=20-=20=EC=9D=B5=EB=AA=85=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EB=A5=BC=20=EB=9E=8C=EB=8B=A4=EB=A1=9C=20=EC=A0=84?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/fp/Lambda.java | 7 +------ src/test/java/nextstep/fp/CarTest.java | 14 ++------------ 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/src/main/java/nextstep/fp/Lambda.java b/src/main/java/nextstep/fp/Lambda.java index bd68fe1ce6..84f891bae9 100644 --- a/src/main/java/nextstep/fp/Lambda.java +++ b/src/main/java/nextstep/fp/Lambda.java @@ -18,12 +18,7 @@ public static void printAllLambda(List numbers) { } public static void runThread() { - new Thread(new Runnable() { - @Override - public void run() { - System.out.println("Hello from thread"); - } - }).start(); + new Thread(() -> System.out.println("Hello from thread")).start(); } public static int sumAll(List numbers) { diff --git a/src/test/java/nextstep/fp/CarTest.java b/src/test/java/nextstep/fp/CarTest.java index 1ab1106fe2..ecab481aec 100644 --- a/src/test/java/nextstep/fp/CarTest.java +++ b/src/test/java/nextstep/fp/CarTest.java @@ -8,24 +8,14 @@ public class CarTest { @Test public void 이동() { Car car = new Car("pobi", 0); - Car actual = car.move(new MoveStrategy() { - @Override - public boolean isMovable() { - return true; - } - }); + Car actual = car.move(() -> true); assertThat(actual).isEqualTo(new Car("pobi", 1)); } @Test public void 정지() { Car car = new Car("pobi", 0); - Car actual = car.move(new MoveStrategy() { - @Override - public boolean isMovable() { - return false; - } - }); + Car actual = car.move(() -> false); assertThat(actual).isEqualTo(new Car("pobi", 0)); } } From a41b47c5012775586c8361afb969a563be68c96a Mon Sep 17 00:00:00 2001 From: baki Date: Sun, 6 Apr 2025 00:57:05 +0900 Subject: [PATCH 2/7] =?UTF-8?q?refactor:=20=EB=9E=8C=EB=8B=A4=20=EC=8B=A4?= =?UTF-8?q?=EC=8A=B5=202=20-=20=EB=9E=8C=EB=8B=A4=EB=A5=BC=20=ED=99=9C?= =?UTF-8?q?=EC=9A=A9=ED=95=B4=20=EC=A4=91=EB=B3=B5=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/fp/Lambda.java | 34 ++++++++++++--------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/main/java/nextstep/fp/Lambda.java b/src/main/java/nextstep/fp/Lambda.java index 84f891bae9..22e4280bac 100644 --- a/src/main/java/nextstep/fp/Lambda.java +++ b/src/main/java/nextstep/fp/Lambda.java @@ -22,30 +22,26 @@ public static void runThread() { } public static int sumAll(List numbers) { - int total = 0; - for (int number : numbers) { - total += number; - } - return total; + return sum(numbers, it -> true); } public static int sumAllEven(List numbers) { - int total = 0; - for (int number : numbers) { - if (number % 2 == 0) { - total += number; - } - } - return total; + return sum(numbers, it -> it % 2 == 0); } public static int sumAllOverThree(List numbers) { - int total = 0; - for (int number : numbers) { - if (number > 3) { - total += number; - } - } - return total; + return sum(numbers, it -> it > 3); + } + + public static int sum(List numbers, Conditional condition) { + return numbers.stream() + .filter(condition::test) + .mapToInt(Integer::intValue) + .sum(); + } + + @FunctionalInterface + public interface Conditional { + boolean test(Integer number); } } From 5a2fd03ea372077e5ebe53d6a543c0fc261c1601 Mon Sep 17 00:00:00 2001 From: baki Date: Sun, 6 Apr 2025 01:06:21 +0900 Subject: [PATCH 3/7] =?UTF-8?q?feat:=20map,=20reduce,=20filter=20=EC=8B=A4?= =?UTF-8?q?=EC=8A=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/fp/StreamStudy.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/nextstep/fp/StreamStudy.java b/src/main/java/nextstep/fp/StreamStudy.java index b446983a02..8160516537 100644 --- a/src/main/java/nextstep/fp/StreamStudy.java +++ b/src/main/java/nextstep/fp/StreamStudy.java @@ -28,6 +28,7 @@ public static void printLongestWordTop100() throws IOException { List words = Arrays.asList(contents.split("[\\P{L}]+")); // TODO 이 부분에 구현한다. + long count = words.stream().filter(w -> w.length() > 12).count(); } public static List doubleNumbers(List numbers) { @@ -39,6 +40,6 @@ public static long sumAll(List numbers) { } public static long sumOverThreeAndDouble(List numbers) { - return 0; + return numbers.stream().filter(it -> it > 3).map(it -> it * 2).reduce(0, Integer::sum); } } \ No newline at end of file From 9d6512213c7485ebcb7167e5b6f74111b5add613 Mon Sep 17 00:00:00 2001 From: baki Date: Sun, 6 Apr 2025 01:08:39 +0900 Subject: [PATCH 4/7] =?UTF-8?q?feat:=20map,=20reduce,=20filter=20=EC=8B=A4?= =?UTF-8?q?=EC=8A=B5=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/fp/StreamStudy.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/nextstep/fp/StreamStudy.java b/src/main/java/nextstep/fp/StreamStudy.java index 8160516537..ecfe0d10da 100644 --- a/src/main/java/nextstep/fp/StreamStudy.java +++ b/src/main/java/nextstep/fp/StreamStudy.java @@ -28,7 +28,12 @@ public static void printLongestWordTop100() throws IOException { List words = Arrays.asList(contents.split("[\\P{L}]+")); // TODO 이 부분에 구현한다. - long count = words.stream().filter(w -> w.length() > 12).count(); + words.stream() + .filter(word -> word.length() > 12) + .sorted((a, b) -> b.length() - a.length()) + .distinct() + .limit(100) + .forEach(System.out::println); } public static List doubleNumbers(List numbers) { From bcb1e285687ad27aa5488c3cb42e7ad948985d27 Mon Sep 17 00:00:00 2001 From: baki Date: Sun, 6 Apr 2025 01:12:45 +0900 Subject: [PATCH 5/7] =?UTF-8?q?feat:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=201=20-=20Optional=EC=9D=84=20=ED=99=9C=EC=9A=A9?= =?UTF-8?q?=ED=95=B4=20=EC=A1=B0=EA=B1=B4=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/optional/User.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/nextstep/optional/User.java b/src/main/java/nextstep/optional/User.java index 9614c2f43f..35233b15ba 100644 --- a/src/main/java/nextstep/optional/User.java +++ b/src/main/java/nextstep/optional/User.java @@ -1,5 +1,7 @@ package nextstep.optional; +import java.util.Optional; + public class User { private String name; private Integer age; @@ -33,7 +35,11 @@ public static boolean ageIsInRange1(User user) { } public static boolean ageIsInRange2(User user) { - return false; + return Optional.ofNullable(user) + .filter(it -> it.getAge() != null) + .filter(it -> it.getAge() >= 30) + .filter(it -> it.getAge() <= 45) + .isPresent(); } @Override From 5d352658dae021086e7bd8c826f7c5e26c71932e Mon Sep 17 00:00:00 2001 From: baki Date: Sun, 6 Apr 2025 01:14:45 +0900 Subject: [PATCH 6/7] =?UTF-8?q?feat:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=202=20-=20Optional=EC=97=90=EC=84=9C=20=EA=B0=92?= =?UTF-8?q?=EC=9D=84=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/optional/Users.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/nextstep/optional/Users.java b/src/main/java/nextstep/optional/Users.java index 6293040de8..5bb7fb2d93 100644 --- a/src/main/java/nextstep/optional/Users.java +++ b/src/main/java/nextstep/optional/Users.java @@ -13,11 +13,9 @@ public class Users { new User("honux", 45)); User getUser(String name) { - for (User user : users) { - if (user.matchName(name)) { - return user; - } - } - return DEFAULT_USER; + return users.stream() + .filter(user -> user.matchName(name)) + .findFirst() + .orElse(DEFAULT_USER); } } From bf4210d47029a872d215b93e8614537ff3b620b1 Mon Sep 17 00:00:00 2001 From: baki Date: Sun, 6 Apr 2025 01:17:22 +0900 Subject: [PATCH 7/7] =?UTF-8?q?feat:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=203=20-=20Optional=EC=97=90=EC=84=9C=20exception=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/optional/Expression.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/nextstep/optional/Expression.java b/src/main/java/nextstep/optional/Expression.java index 1c98cd6a62..820ae51a65 100644 --- a/src/main/java/nextstep/optional/Expression.java +++ b/src/main/java/nextstep/optional/Expression.java @@ -1,5 +1,7 @@ package nextstep.optional; +import java.util.Arrays; + enum Expression { PLUS("+"), MINUS("-"), TIMES("*"), DIVIDE("/"); @@ -14,12 +16,9 @@ private static boolean matchExpression(Expression e, String expression) { } static Expression of(String expression) { - for (Expression v : values()) { - if (matchExpression(v, expression)) { - return v; - } - } - - throw new IllegalArgumentException(String.format("%s는 사칙연산에 해당하지 않는 표현식입니다.", expression)); + return Arrays.stream(values()) + .filter(e -> matchExpression(e, expression)) + .findAny() + .orElseThrow(() -> new IllegalArgumentException(String.format("%s는 사칙연산에 해당하지 않는 표현식입니다.", expression))); } }