Цель: найти победителя с более крупной картой.
Первый : определить структуру данных, методы конструктора Omit и методы получения / установки:
public class Card {
private CardRank rank;
private String suit;
}
public enum CardRank {
CARD_2(2),
CARD_4(4),
CARD_5(5);
private int val;
public int getVal() {
return val;
}
CardRank(int val) {
this.val = val;
}
}
public class Hand {
private Player player;
private Card firstCard;
private Card secondCard;
}
public class Player {
private String name;
private int money;
}
public class PlayerWithBigCard {
private String name;
private CardRank rank;
Секунда: используйте Java 8 stream API, чтобы найти нужного игрока (пропустите коды инициализации):
Optional<PlayerWithBigCard> winner = hands.stream().map(hand -> {
PlayerWithBigCard playerWithBigCard = new PlayerWithBigCard();
playerWithBigCard.setName(hand.getPlayer().getName());
CardRank firstCardRank = hand.getFirstCard().getRank();
CardRank secondCardRank = hand.getSecondCard().getRank();
if (firstCardRank.getVal() - secondCardRank.getVal() > 0) {
playerWithBigCard.setRank(firstCardRank);
} else {
playerWithBigCard.setRank(secondCardRank);
}
return playerWithBigCard;
}).max(Comparator.comparingInt(p -> p.getRank().getVal()));
winner.ifPresent(playerWithBigCard -> System.out.println(playerWithBigCard.getName()));
ps : Java Strem предоставляет много простых методов обработки данных, вы можете найти документы по здесь