import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class Poker { private final List bestHands; public Poker(final List hands) { bestHands = bestHands(hands); } public List getBestHands() { return bestHands; } public List bestHands(final List hands) { ArrayList scoredHands = new ArrayList(); for (String s : hands) { scoredHands.add(new Hand(s)); } int maxscore = scoredHands.stream().map(h -> h.getScore()).max(Comparator.naturalOrder()).get(); return scoredHands.stream().filter(h -> h.getScore() == maxscore).map(h -> h.getInput()) .collect(Collectors.toList()); } }