From 28a96feb0192e5e7bddc55d84f2ab9bf4bdc64e8 Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Wed, 13 May 2026 10:12:03 +0200 Subject: [PATCH 1/8] first solution --- src/main/java/practice/StreamPractice.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/practice/StreamPractice.java b/src/main/java/practice/StreamPractice.java index 57b1ca2e2..c4f09f810 100644 --- a/src/main/java/practice/StreamPractice.java +++ b/src/main/java/practice/StreamPractice.java @@ -1,7 +1,12 @@ package practice; +import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.NoSuchElementException; +import java.util.function.IntToDoubleFunction; +import java.util.stream.IntStream; + import model.Candidate; import model.Person; @@ -14,7 +19,14 @@ public class StreamPractice { * "Can't get min value from list: < Here is our input 'numbers' >" */ public int findMinEvenNumber(List numbers) { - return 0; + return numbers.stream() + .flatMap(n -> Arrays.stream(n.split(","))) + .map(String::trim) + .map(Integer::parseInt) + .filter(n-> n % 2 ==0) + .min(Integer::compare) + .orElseThrow(() - > new RuntimeException( + "Cant't get min value from list: " + numbers)); } /** @@ -23,7 +35,11 @@ public int findMinEvenNumber(List numbers) { * But before that subtract 1 from each element on an odd position (having the odd index). */ public Double getOddNumsAverage(List numbers) { - return 0D; + return numbers.stream() + .mapToInt(Integer::intValue) + .filter(n -> n % 2 != 0) + .average() + .orElseThrow(() -> new NoSuchElementException("No odd numbers in the list: " + numbers)); } /** From ad1d9015de3813783637ef04ab16513badc63d20 Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Wed, 13 May 2026 22:32:57 +0200 Subject: [PATCH 2/8] firstSolution --- .../java/practice/CandidateValidator.java | 14 +++++++- src/main/java/practice/StreamPractice.java | 32 +++++++++++++------ 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/main/java/practice/CandidateValidator.java b/src/main/java/practice/CandidateValidator.java index 8d2e56c0e..a1dca7b06 100644 --- a/src/main/java/practice/CandidateValidator.java +++ b/src/main/java/practice/CandidateValidator.java @@ -1,5 +1,17 @@ package practice; +import model.Candidate; +import java.util.function.Predicate; + public class CandidateValidator { - //write your code here + public static final int fromAge = 35; + public static final String livePeriod = "2002-2015"; + public static final String nationality = "Ukrainian"; + + public static Predicate isValid() { + return candidate -> candidate.getAge() >= fromAge + && candidate.isAllowedToVote() + && nationality.equals(candidate.getNationality()) + && livePeriod.equals(candidate.getPeriodsInUkr()); + } } diff --git a/src/main/java/practice/StreamPractice.java b/src/main/java/practice/StreamPractice.java index c4f09f810..ad7602734 100644 --- a/src/main/java/practice/StreamPractice.java +++ b/src/main/java/practice/StreamPractice.java @@ -1,16 +1,14 @@ package practice; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.NoSuchElementException; -import java.util.function.IntToDoubleFunction; -import java.util.stream.IntStream; - import model.Candidate; +import model.Cat; import model.Person; public class StreamPractice { + /** * Given list of strings where each element contains 1+ numbers: * input = {"5,30,100", "0,22,7", ...} @@ -25,7 +23,7 @@ public int findMinEvenNumber(List numbers) { .map(Integer::parseInt) .filter(n-> n % 2 ==0) .min(Integer::compare) - .orElseThrow(() - > new RuntimeException( + .orElseThrow(() -> new RuntimeException( "Cant't get min value from list: " + numbers)); } @@ -51,7 +49,10 @@ public Double getOddNumsAverage(List numbers) { * Example: select men who can be recruited to army (from 18 to 27 years old inclusively). */ public List selectMenByAge(List peopleList, int fromAge, int toAge) { - return Collections.emptyList(); + return peopleList.stream() + .filter(p -> p.getSex() == Person.Sex.MAN + && (p.getAge() >= fromAge && p.getAge() <= toAge)) + .toList(); } /** @@ -66,7 +67,12 @@ public List selectMenByAge(List peopleList, int fromAge, int toA */ public List getWorkablePeople(int fromAge, int femaleToAge, int maleToAge, List peopleList) { - return Collections.emptyList(); + return peopleList.stream() + .filter(p -> (p.getSex() == Person.Sex.MAN + && (p.getAge() >= fromAge && p.getAge() <= maleToAge)) + || (p.getSex() == Person.Sex.WOMAN && + (p.getAge() >= fromAge && p.getAge() <= femaleToAge))) + .toList(); } /** @@ -75,7 +81,11 @@ public List getWorkablePeople(int fromAge, int femaleToAge, * return the names of all cats whose owners are women from `femaleAge` years old inclusively. */ public List getCatsNames(List peopleList, int femaleAge) { - return Collections.emptyList(); + return peopleList.stream() + .filter(p -> p.getSex() == Person.Sex.WOMAN && p.getAge() >= femaleAge) + .flatMap(p -> p.getCats().stream()) + .map(Cat::getName) + .toList(); } /** @@ -91,6 +101,10 @@ public List getCatsNames(List peopleList, int femaleAge) { * parametrized with Candidate in CandidateValidator. */ public List validateCandidates(List candidates) { - return Collections.emptyList(); + return candidates.stream() + .filter(CandidateValidator.isValid()) + .map(Candidate::getName) + .sorted() + .toList(); } } From 807e2c43865052b7692bd3504acede2f8a8380a7 Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Wed, 13 May 2026 22:37:58 +0200 Subject: [PATCH 3/8] checkstyle fixes --- src/main/java/practice/CandidateValidator.java | 2 +- src/main/java/practice/StreamPractice.java | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/practice/CandidateValidator.java b/src/main/java/practice/CandidateValidator.java index a1dca7b06..b389d0821 100644 --- a/src/main/java/practice/CandidateValidator.java +++ b/src/main/java/practice/CandidateValidator.java @@ -1,7 +1,7 @@ package practice; -import model.Candidate; import java.util.function.Predicate; +import model.Candidate; public class CandidateValidator { public static final int fromAge = 35; diff --git a/src/main/java/practice/StreamPractice.java b/src/main/java/practice/StreamPractice.java index ad7602734..3b62a70bd 100644 --- a/src/main/java/practice/StreamPractice.java +++ b/src/main/java/practice/StreamPractice.java @@ -21,7 +21,7 @@ public int findMinEvenNumber(List numbers) { .flatMap(n -> Arrays.stream(n.split(","))) .map(String::trim) .map(Integer::parseInt) - .filter(n-> n % 2 ==0) + .filter(n -> n % 2 == 0) .min(Integer::compare) .orElseThrow(() -> new RuntimeException( "Cant't get min value from list: " + numbers)); @@ -37,7 +37,8 @@ public Double getOddNumsAverage(List numbers) { .mapToInt(Integer::intValue) .filter(n -> n % 2 != 0) .average() - .orElseThrow(() -> new NoSuchElementException("No odd numbers in the list: " + numbers)); + .orElseThrow(() -> new NoSuchElementException( + "No odd numbers in the list: " + numbers)); } /** @@ -70,8 +71,8 @@ public List getWorkablePeople(int fromAge, int femaleToAge, return peopleList.stream() .filter(p -> (p.getSex() == Person.Sex.MAN && (p.getAge() >= fromAge && p.getAge() <= maleToAge)) - || (p.getSex() == Person.Sex.WOMAN && - (p.getAge() >= fromAge && p.getAge() <= femaleToAge))) + || (p.getSex() == Person.Sex.WOMAN + && (p.getAge() >= fromAge && p.getAge() <= femaleToAge))) .toList(); } From 7749fcc9458da04009b74ec8b0c54dce8cdff6eb Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Wed, 13 May 2026 22:48:15 +0200 Subject: [PATCH 4/8] after fixes --- src/main/java/practice/CandidateValidator.java | 1 + src/main/java/practice/StreamPractice.java | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/practice/CandidateValidator.java b/src/main/java/practice/CandidateValidator.java index b389d0821..c7b9c0b4a 100644 --- a/src/main/java/practice/CandidateValidator.java +++ b/src/main/java/practice/CandidateValidator.java @@ -8,6 +8,7 @@ public class CandidateValidator { public static final String livePeriod = "2002-2015"; public static final String nationality = "Ukrainian"; + @Override public static Predicate isValid() { return candidate -> candidate.getAge() >= fromAge && candidate.isAllowedToVote() diff --git a/src/main/java/practice/StreamPractice.java b/src/main/java/practice/StreamPractice.java index 3b62a70bd..35970ab8a 100644 --- a/src/main/java/practice/StreamPractice.java +++ b/src/main/java/practice/StreamPractice.java @@ -3,6 +3,8 @@ import java.util.Arrays; import java.util.List; import java.util.NoSuchElementException; +import java.util.stream.IntStream; + import model.Candidate; import model.Cat; import model.Person; @@ -33,8 +35,8 @@ public int findMinEvenNumber(List numbers) { * But before that subtract 1 from each element on an odd position (having the odd index). */ public Double getOddNumsAverage(List numbers) { - return numbers.stream() - .mapToInt(Integer::intValue) + return IntStream.range(0, numbers.size()) + .map(i -> i % 2 == 1 ? numbers.get(i) - 1 : numbers.get(i)) .filter(n -> n % 2 != 0) .average() .orElseThrow(() -> new NoSuchElementException( From a47d389118519f75f853a088d66e122a5fb29b79 Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Wed, 13 May 2026 22:50:18 +0200 Subject: [PATCH 5/8] override remove --- src/main/java/practice/CandidateValidator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/practice/CandidateValidator.java b/src/main/java/practice/CandidateValidator.java index c7b9c0b4a..b389d0821 100644 --- a/src/main/java/practice/CandidateValidator.java +++ b/src/main/java/practice/CandidateValidator.java @@ -8,7 +8,6 @@ public class CandidateValidator { public static final String livePeriod = "2002-2015"; public static final String nationality = "Ukrainian"; - @Override public static Predicate isValid() { return candidate -> candidate.getAge() >= fromAge && candidate.isAllowedToVote() From 671ceb8cc5a2c26ea56155227b3a540700187027 Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Wed, 13 May 2026 22:52:16 +0200 Subject: [PATCH 6/8] empty line remove --- src/main/java/practice/StreamPractice.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/practice/StreamPractice.java b/src/main/java/practice/StreamPractice.java index 35970ab8a..97a568510 100644 --- a/src/main/java/practice/StreamPractice.java +++ b/src/main/java/practice/StreamPractice.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.NoSuchElementException; import java.util.stream.IntStream; - import model.Candidate; import model.Cat; import model.Person; From b6fb94c21370db4565145ceaab63b1fa77066190 Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Thu, 14 May 2026 10:17:49 +0200 Subject: [PATCH 7/8] fixes equals, added method periodInUkrConvertedToYears in class CandidateValidator --- config/checkstyle.xml | 250 ++++++++++++++++++ pom.xml | 2 +- .../java/practice/CandidateValidator.java | 21 +- src/main/java/practice/StreamPractice.java | 10 +- 4 files changed, 272 insertions(+), 11 deletions(-) create mode 100644 config/checkstyle.xml diff --git a/config/checkstyle.xml b/config/checkstyle.xml new file mode 100644 index 000000000..ea0a5295c --- /dev/null +++ b/config/checkstyle.xml @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 398a873c1..01702da99 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ - ${maven.checkstyle.plugin.configLocation} + config/checkstyle.xml true true false diff --git a/src/main/java/practice/CandidateValidator.java b/src/main/java/practice/CandidateValidator.java index b389d0821..685b04ad1 100644 --- a/src/main/java/practice/CandidateValidator.java +++ b/src/main/java/practice/CandidateValidator.java @@ -3,15 +3,26 @@ import java.util.function.Predicate; import model.Candidate; -public class CandidateValidator { +public class CandidateValidator implements Predicate { public static final int fromAge = 35; - public static final String livePeriod = "2002-2015"; public static final String nationality = "Ukrainian"; + public static final int MIN_LIVE_PERIOD = 10; - public static Predicate isValid() { - return candidate -> candidate.getAge() >= fromAge + public int periodInUkrConvertedToYears(Candidate candidate) { + String period = candidate.getPeriodsInUkr(); + int years = Math.abs( + Integer.parseInt(period.split("-")[0]) + - Integer.parseInt(period.split("-")[1]) + ); + return years; + } + + @Override + public boolean test(Candidate candidate) { + return candidate.getAge() >= fromAge && candidate.isAllowedToVote() && nationality.equals(candidate.getNationality()) - && livePeriod.equals(candidate.getPeriodsInUkr()); + && periodInUkrConvertedToYears(candidate) > MIN_LIVE_PERIOD; } } + diff --git a/src/main/java/practice/StreamPractice.java b/src/main/java/practice/StreamPractice.java index 97a568510..7a9aaf7d3 100644 --- a/src/main/java/practice/StreamPractice.java +++ b/src/main/java/practice/StreamPractice.java @@ -25,7 +25,7 @@ public int findMinEvenNumber(List numbers) { .filter(n -> n % 2 == 0) .min(Integer::compare) .orElseThrow(() -> new RuntimeException( - "Cant't get min value from list: " + numbers)); + "Can't get min value from list: " + numbers)); } /** @@ -52,7 +52,7 @@ public Double getOddNumsAverage(List numbers) { */ public List selectMenByAge(List peopleList, int fromAge, int toAge) { return peopleList.stream() - .filter(p -> p.getSex() == Person.Sex.MAN + .filter(p -> p.getSex().equals(Person.Sex.MAN) && (p.getAge() >= fromAge && p.getAge() <= toAge)) .toList(); } @@ -72,7 +72,7 @@ public List getWorkablePeople(int fromAge, int femaleToAge, return peopleList.stream() .filter(p -> (p.getSex() == Person.Sex.MAN && (p.getAge() >= fromAge && p.getAge() <= maleToAge)) - || (p.getSex() == Person.Sex.WOMAN + || (p.getSex().equals(Person.Sex.WOMAN) && (p.getAge() >= fromAge && p.getAge() <= femaleToAge))) .toList(); } @@ -84,7 +84,7 @@ public List getWorkablePeople(int fromAge, int femaleToAge, */ public List getCatsNames(List peopleList, int femaleAge) { return peopleList.stream() - .filter(p -> p.getSex() == Person.Sex.WOMAN && p.getAge() >= femaleAge) + .filter(p -> p.getSex().equals(Person.Sex.WOMAN) && p.getAge() >= femaleAge) .flatMap(p -> p.getCats().stream()) .map(Cat::getName) .toList(); @@ -104,7 +104,7 @@ public List getCatsNames(List peopleList, int femaleAge) { */ public List validateCandidates(List candidates) { return candidates.stream() - .filter(CandidateValidator.isValid()) + .filter(new CandidateValidator()) .map(Candidate::getName) .sorted() .toList(); From 9fee0c3bc0cba788d02b2a0b2774e760ad3924cd Mon Sep 17 00:00:00 2001 From: Michal Brynkiewicz Date: Thu, 14 May 2026 13:05:48 +0200 Subject: [PATCH 8/8] changes nad fixes applied --- src/main/java/practice/CandidateValidator.java | 12 ++++++------ src/main/java/practice/StreamPractice.java | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/practice/CandidateValidator.java b/src/main/java/practice/CandidateValidator.java index 685b04ad1..1b57986e4 100644 --- a/src/main/java/practice/CandidateValidator.java +++ b/src/main/java/practice/CandidateValidator.java @@ -4,11 +4,11 @@ import model.Candidate; public class CandidateValidator implements Predicate { - public static final int fromAge = 35; - public static final String nationality = "Ukrainian"; + public static final int MIN_AGE = 35; + public static final String REQUIRED_NATIONALITY = "Ukrainian"; public static final int MIN_LIVE_PERIOD = 10; - public int periodInUkrConvertedToYears(Candidate candidate) { + private int getYearsInUkraine(Candidate candidate) { String period = candidate.getPeriodsInUkr(); int years = Math.abs( Integer.parseInt(period.split("-")[0]) @@ -19,10 +19,10 @@ public int periodInUkrConvertedToYears(Candidate candidate) { @Override public boolean test(Candidate candidate) { - return candidate.getAge() >= fromAge + return candidate.getAge() >= MIN_AGE && candidate.isAllowedToVote() - && nationality.equals(candidate.getNationality()) - && periodInUkrConvertedToYears(candidate) > MIN_LIVE_PERIOD; + && REQUIRED_NATIONALITY.equals(candidate.getNationality()) + && getYearsInUkraine(candidate) >= MIN_LIVE_PERIOD; } } diff --git a/src/main/java/practice/StreamPractice.java b/src/main/java/practice/StreamPractice.java index 7a9aaf7d3..9c9707fab 100644 --- a/src/main/java/practice/StreamPractice.java +++ b/src/main/java/practice/StreamPractice.java @@ -19,11 +19,11 @@ public class StreamPractice { */ public int findMinEvenNumber(List numbers) { return numbers.stream() - .flatMap(n -> Arrays.stream(n.split(","))) + .flatMap(s -> Arrays.stream(s.split(","))) .map(String::trim) - .map(Integer::parseInt) + .mapToInt(Integer::parseInt) .filter(n -> n % 2 == 0) - .min(Integer::compare) + .min() .orElseThrow(() -> new RuntimeException( "Can't get min value from list: " + numbers)); }