| 1234567891011121314151617181920212223242526272829303132333435 |
- import java.util.*;
- import java.util.stream.Collectors;
-
- class Poker {
- private final List<String> bestHands;
-
- Poker(final List<String> hands) {
- bestHands = bestHands(hands);
- }
-
- List<String> getBestHands() {
- return bestHands;
- }
-
- private List<String> bestHands(final List<String> hands) {
- ArrayList<Hand> scoredHands = new ArrayList<>();
-
- for (String s : hands) {
- scoredHands.add(new Hand(s));
- }
- Optional<Integer> maxScoreIfAny = scoredHands
- .stream()
- .map(Hand::getScore)
- .max(Comparator.naturalOrder());
- return maxScoreIfAny
- .map(maxScore -> scoredHands
- .stream()
- .filter(h -> h.getScore() == maxScore)
- .map(Hand::getInput)
- .collect(Collectors.toList()))
- .orElseGet(Collections::emptyList);
-
- }
- }
|