From 46bd85a0a12e6bba066a6e414cb84b31343e5072 Mon Sep 17 00:00:00 2001 From: Andrey Zinovich Date: Sat, 8 Aug 2026 13:38:47 +0300 Subject: [PATCH] minor updates --- .../src/modern/challenge/Main.java | 33 ++++++++++++++++--- Chapter02/P53_CloningObjects/pom.xml | 4 +-- .../src/modern/challenge/Main.java | 6 ++-- .../P141_JSONFileToObjectViaGson/pom.xml | 2 +- .../src/modern/challenge/Filters.java | 16 +++++++++ .../src/modern/challenge/Main.java | 4 +++ .../src/modern/challenge/Melon.java | 22 +++---------- 7 files changed, 60 insertions(+), 27 deletions(-) diff --git a/Chapter02/P40_CheckNullsFunctionalNonFunctional/src/modern/challenge/Main.java b/Chapter02/P40_CheckNullsFunctionalNonFunctional/src/modern/challenge/Main.java index ce3c55aa..2ae07ea3 100644 --- a/Chapter02/P40_CheckNullsFunctionalNonFunctional/src/modern/challenge/Main.java +++ b/Chapter02/P40_CheckNullsFunctionalNonFunctional/src/modern/challenge/Main.java @@ -2,20 +2,45 @@ import java.util.Arrays; import java.util.List; +import java.util.Objects; public class Main { public static void main(String[] args) { - + List numbers = Arrays.asList(1, 2, null, 4, null, 16, 7, null); - + int sum = Numbers.sumIntegers(numbers); boolean nulls = Numbers.integersContainsNulls(numbers); List evens = Numbers.evenIntegers(numbers); - + System.out.println("Contain nulls? " + nulls); System.out.println("Sum: " + sum); System.out.println("Evens: " + evens); + + System.out.println(getOddEx(numbers)); + } + + public static List getOdd(List numbers) { + if (Objects.isNull(numbers)) { + System.out.println("List is empty"); + } + + return numbers.stream() + .filter(Objects::nonNull) + .filter(integer -> integer % 2 == 0) + .toList(); } - + + public static List getOddEx(List numbers) { + Objects.requireNonNull(numbers, "List is empty"); + + + return numbers.stream() + .filter(Objects::nonNull) + .filter(integer -> integer % 2 == 0) + .toList(); + } + + } diff --git a/Chapter02/P53_CloningObjects/pom.xml b/Chapter02/P53_CloningObjects/pom.xml index 47243665..dd7ecb01 100644 --- a/Chapter02/P53_CloningObjects/pom.xml +++ b/Chapter02/P53_CloningObjects/pom.xml @@ -20,12 +20,12 @@ org.apache.commons commons-lang3 - 3.8.1 + 3.19.0 com.google.code.gson gson - 2.8.2 + 2.11.0 diff --git a/Chapter02/P55_SwitchExpression/src/modern/challenge/Main.java b/Chapter02/P55_SwitchExpression/src/modern/challenge/Main.java index f0df2d84..4661093f 100644 --- a/Chapter02/P55_SwitchExpression/src/modern/challenge/Main.java +++ b/Chapter02/P55_SwitchExpression/src/modern/challenge/Main.java @@ -42,7 +42,7 @@ private static Player createPlayerSwitchStatementUgly(PlayerTypes playerType) { return player; } - private static Player createPlayerSwitchStatementNice(PlayerTypes playerType) { + private static Playerok createPlayerSwitchStatementNice(PlayerTypes playerType) { switch (playerType) { case TENNIS: return new TennisPlayer(); @@ -57,7 +57,7 @@ private static Player createPlayerSwitchStatementNice(PlayerTypes playerType) { } } - private static Player createPlayerSwitchExpression(PlayerTypes playerType) { + private static Playerok createPlayerSwitchExpression(PlayerTypes playerType) { return switch (playerType) { case TENNIS-> new TennisPlayer(); @@ -73,7 +73,7 @@ private static Player createPlayerSwitchExpression(PlayerTypes playerType) { }; } - private static Player createPlayerSwitchExpressionBreak(PlayerTypes playerType) { + private static Playerok createPlayerSwitchExpressionBreak(PlayerTypes playerType) { return switch (playerType) { case TENNIS: break new TennisPlayer(); diff --git a/Chapter06/P141_JSONFileToObjectViaGson/pom.xml b/Chapter06/P141_JSONFileToObjectViaGson/pom.xml index 22c882f5..157623f2 100644 --- a/Chapter06/P141_JSONFileToObjectViaGson/pom.xml +++ b/Chapter06/P141_JSONFileToObjectViaGson/pom.xml @@ -15,7 +15,7 @@ com.google.code.gson gson - 2.8.5 + 2.11.0 P141_JSONFileToObjectViaGson diff --git a/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Filters.java b/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Filters.java index 750a1649..a9348020 100644 --- a/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Filters.java +++ b/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Filters.java @@ -25,6 +25,22 @@ public static List filter(List list, Predicate predicate) { return result; } + public static List filterNative(List list, java.util.function.Predicate predicate ) { + + if (list == null) { + throw new IllegalArgumentException("List cannot be null"); + } + + List result = new ArrayList<>(); + for (T t : list) { + if (t != null && predicate.test(t)) { + result.add(t); + } + } + + return result; + } + public static List filterMelons(List melons, MelonPredicate predicate) { if (melons == null) { diff --git a/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Main.java b/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Main.java index df46497f..91ae2ce1 100644 --- a/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Main.java +++ b/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Main.java @@ -48,6 +48,10 @@ public boolean test(Melon melon) { List smallThan10 = Filters .filter(numbers, (Integer i) -> i < 10); System.out.println("Numbers < 10: " + smallThan10); + + List wStartedFilter = Filters + .filterNative(melons, melon -> "W".equalsIgnoreCase(melon.getType())); + System.out.println("wStartedFilter = " + wStartedFilter); } } diff --git a/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Melon.java b/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Melon.java index 2c635ba1..277d5b7b 100644 --- a/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Melon.java +++ b/Chapter08/P166_WritingFunctionalInterfaces/src/modern/challenge/Melon.java @@ -1,29 +1,17 @@ package modern.challenge; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor public class Melon { private final String type; private final int weight; private final String origin; - public Melon(String type, int weight, String origin) { - this.type = type; - this.weight = weight; - this.origin = origin; - } - - public String getType() { - return type; - } - public int getWeight() { - return weight; - } - - public String getOrigin() { - return origin; - } - @Override public String toString() { return type + "(" + weight + "g, " + origin + ")";