lots of exercises in java... from https://github.com/exercism/java

Poker.java 968B

1234567891011121314151617181920212223242526272829303132333435
  1. import java.util.*;
  2. import java.util.stream.Collectors;
  3. class Poker {
  4. private final List<String> bestHands;
  5. Poker(final List<String> hands) {
  6. bestHands = bestHands(hands);
  7. }
  8. List<String> getBestHands() {
  9. return bestHands;
  10. }
  11. private List<String> bestHands(final List<String> hands) {
  12. ArrayList<Hand> scoredHands = new ArrayList<>();
  13. for (String s : hands) {
  14. scoredHands.add(new Hand(s));
  15. }
  16. Optional<Integer> maxScoreIfAny = scoredHands
  17. .stream()
  18. .map(Hand::getScore)
  19. .max(Comparator.naturalOrder());
  20. return maxScoreIfAny
  21. .map(maxScore -> scoredHands
  22. .stream()
  23. .filter(h -> h.getScore() == maxScore)
  24. .map(Hand::getInput)
  25. .collect(Collectors.toList()))
  26. .orElseGet(Collections::emptyList);
  27. }
  28. }