-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement all methods #1220
base: main
Are you sure you want to change the base?
implement all methods #1220
Changes from 1 commit
54356ef
2d0550a
9a44c01
9c2b0b4
9a6b566
b37ef4e
be5b217
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -1,5 +1,39 @@ | ||||||
package practice; | ||||||
|
||||||
public class CandidateValidator { | ||||||
//write your code here | ||||||
import java.util.Arrays; | ||||||
import java.util.List; | ||||||
import java.util.function.Predicate; | ||||||
import java.util.stream.Collectors; | ||||||
import model.Candidate; | ||||||
|
||||||
public class CandidateValidator implements Predicate<Candidate> { | ||||||
@Override | ||||||
public boolean test(Candidate candidate) { | ||||||
if (candidate == null) { | ||||||
return false; | ||||||
} | ||||||
if (!"Ukrainian".equals(candidate.getNationality())) { | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider using a constant for the nationality string "Ukrainian" to improve readability and maintainability. This aligns with the checklist advice to avoid magic strings. |
||||||
return false; | ||||||
} | ||||||
if (candidate.getAge() < 35) { | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider using a constant for the age requirement (35) to improve readability and maintainability. This aligns with the checklist advice to avoid magic numbers. |
||||||
return false; | ||||||
} | ||||||
if (!candidate.isAllowedToVote()) { | ||||||
return false; | ||||||
} | ||||||
try { | ||||||
List<Integer> periodInUkraine = Arrays.stream(candidate.getPeriodsInUkr().split("-")) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. make separator constant field |
||||||
.map(String::trim) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
.map(Integer::valueOf) | ||||||
.collect(Collectors.toList()); | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Before splitting and processing the |
||||||
if (periodInUkraine.size() != 2 | ||||||
|| periodInUkraine.get(1) - periodInUkraine.get(0) < 10) { | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider using a constant for the minimum residency period (10 years) to improve readability and maintainability. This aligns with the checklist advice to avoid magic numbers. |
||||||
return false; | ||||||
} | ||||||
} catch (NumberFormatException | IndexOutOfBoundsException e) { | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
you validated the collection size |
||||||
return false; | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider validating the format of the |
||||||
} | ||||||
return true; | ||||||
} | ||||||
} | ||||||
|
||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. leave only one line at the end of the file |
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
@@ -1,8 +1,12 @@ | ||||||||||
package practice; | ||||||||||
|
||||||||||
import java.util.Collections; | ||||||||||
import java.util.Arrays; | ||||||||||
import java.util.List; | ||||||||||
import java.util.NoSuchElementException; | ||||||||||
import java.util.stream.Collectors; | ||||||||||
import java.util.stream.IntStream; | ||||||||||
import model.Candidate; | ||||||||||
import model.Cat; | ||||||||||
import model.Person; | ||||||||||
|
||||||||||
public class StreamPractice { | ||||||||||
|
@@ -14,7 +18,16 @@ public class StreamPractice { | |||||||||
* "Can't get min value from list: < Here is our input 'numbers' >" | ||||||||||
*/ | ||||||||||
public int findMinEvenNumber(List<String> numbers) { | ||||||||||
return 0; | ||||||||||
return numbers.stream() | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider checking if the |
||||||||||
.map(s -> s.split(",")) | ||||||||||
.flatMap(Arrays::stream) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. combine into one map |
||||||||||
.map(String::trim) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remove |
||||||||||
.map(Integer::valueOf) | ||||||||||
.filter(i -> i % 2 == 0) | ||||||||||
.min(Integer::compareTo) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
It is the default behavior There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||||||
.orElseThrow(() -> new RuntimeException( | ||||||||||
"Can't get min value from list: " + numbers | ||||||||||
)); | ||||||||||
} | ||||||||||
|
||||||||||
/** | ||||||||||
|
@@ -23,7 +36,12 @@ public int findMinEvenNumber(List<String> numbers) { | |||||||||
* But before that subtract 1 from each element on an odd position (having the odd index). | ||||||||||
*/ | ||||||||||
public Double getOddNumsAverage(List<Integer> numbers) { | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider checking if the |
||||||||||
return 0D; | ||||||||||
|
||||||||||
return IntStream.range(0, numbers.size()) | ||||||||||
.map(i -> i % 2 == 1 ? numbers.get(i) - 1 : numbers.get(i)) | ||||||||||
.filter(num -> num % 2 != 0) | ||||||||||
.average() | ||||||||||
.orElseThrow(NoSuchElementException::new); | ||||||||||
} | ||||||||||
|
||||||||||
/** | ||||||||||
|
@@ -35,7 +53,10 @@ public Double getOddNumsAverage(List<Integer> numbers) { | |||||||||
* Example: select men who can be recruited to army (from 18 to 27 years old inclusively). | ||||||||||
*/ | ||||||||||
public List<Person> selectMenByAge(List<Person> peopleList, int fromAge, int toAge) { | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider checking if the |
||||||||||
return Collections.emptyList(); | ||||||||||
return peopleList.stream() | ||||||||||
.filter(p -> p.getAge() >= fromAge && p.getAge() <= toAge) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. rename p |
||||||||||
.filter(p -> p.getSex() == Person.Sex.MAN) | ||||||||||
.collect(Collectors.toList()); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. for all places
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fix comment There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not fixed |
||||||||||
} | ||||||||||
|
||||||||||
/** | ||||||||||
|
@@ -50,7 +71,11 @@ public List<Person> selectMenByAge(List<Person> peopleList, int fromAge, int toA | |||||||||
*/ | ||||||||||
public List<Person> getWorkablePeople(int fromAge, int femaleToAge, | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider checking if the |
||||||||||
int maleToAge, List<Person> peopleList) { | ||||||||||
return Collections.emptyList(); | ||||||||||
return peopleList.stream() | ||||||||||
.filter(p -> p.getAge() >= fromAge) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. rename p |
||||||||||
.filter((p -> (p.getSex() == Person.Sex.WOMAN && p.getAge() <= femaleToAge) | ||||||||||
|| (p.getSex() == Person.Sex.MAN && p.getAge() <= maleToAge))) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
.collect(Collectors.toList()); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
} | ||||||||||
|
||||||||||
/** | ||||||||||
|
@@ -59,10 +84,15 @@ public List<Person> getWorkablePeople(int fromAge, int femaleToAge, | |||||||||
* return the names of all cats whose owners are women from `femaleAge` years old inclusively. | ||||||||||
*/ | ||||||||||
public List<String> getCatsNames(List<Person> peopleList, int femaleAge) { | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider checking if the |
||||||||||
return Collections.emptyList(); | ||||||||||
return peopleList.stream() | ||||||||||
.filter(p -> p.getSex() == Person.Sex.WOMAN) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. rename p |
||||||||||
.filter(p -> p.getAge() >= femaleAge) | ||||||||||
.flatMap(c -> c.getCats().stream()) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. rename c |
||||||||||
.map(Cat::getName) | ||||||||||
.collect(Collectors.toList()); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
} | ||||||||||
|
||||||||||
/** | ||||||||||
/** V - wtf MA, wrong article | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. revert changes |
||||||||||
* Your help with a election is needed. Given list of candidates, where each element | ||||||||||
* has Candidate.class type. | ||||||||||
* Check which candidates are eligible to apply for president position and return their | ||||||||||
|
@@ -75,6 +105,10 @@ public List<String> getCatsNames(List<Person> peopleList, int femaleAge) { | |||||||||
* parametrized with Candidate in CandidateValidator. | ||||||||||
*/ | ||||||||||
public List<String> validateCandidates(List<Candidate> candidates) { | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider checking if the |
||||||||||
return Collections.emptyList(); | ||||||||||
return candidates.stream() | ||||||||||
.filter(new CandidateValidator()) | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. better make CandidateValidator class-level variable |
||||||||||
.map(Candidate::getName) | ||||||||||
.sorted() | ||||||||||
.collect(Collectors.toList()); | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
} | ||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you simplify solution by using logical operators?