Я работаю над классом карты в Java, и я не уверен в реализации определенного метода. Мне нужно включить статический метод (который я буду называть max), который использует метод compareTo для поиска и возврата карты с наивысшим значением в список карточек. Однако мне нужно использовать Iterator для перемещения по списку.Метод возврата наивысшего значения в список с использованием итератора (Java)
Ниже приведен метод compareTo, который я реализовал. Он сортирует карты в порядке убывания, сначала по костюму, затем по рангу.
public int compareTo(Card card) {
if (this.rank.compareTo(card.rank) > 0){
return 1;
} else if (this.rank.compareTo(card.rank) < 0){
return -1;
} else {
if(this.suit.compareTo(card.suit) > 0){
return 1;
} else if (this.suit.compareTo(card.suit) < 0){
return -1;
} else {
return 0;
}
}
Я также включаю в себя мои два перечисления на костюм и ранг.
enum Rank{TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8),
NINE(9), TEN(10), JACK(10), QUEEN(10), KING(10), ACE(11);
private int value;
Rank(int i){
value=i;
}
public int getValue(){
return value;
}
public Rank getPrevious(){
return values()[ordinal() > 0 ? ordinal() - 1 : 0];
}
}
enum Suit{CLUBS, DIAMONDS, HEARTS, SPADES;
public static Suit randomSuit(){
Random random = new Random();
return values()[random.nextInt(values().length)];
}
}
Я не хочу, чтобы включить весь класс так вещи не запутаться, но она включает в себя переменные, ранг и костюм типа ранга и костюм с одним конструктором. Аксессуар-методы для ранжирования и метода toString().
Я сделал грубый метод, следующий за ответом.
Iterator<E> it = collection.iterator;
E max = null;
while(it.hasNext()) {
if(max == null) {
max = it.next();
} else {
e = it.next();
if(e.compareTo(max) > 0) {
max = e;
}
}
}
Мы по крайней мере, должны видеть, что ваш ' макс() ' метод выглядит. –
Извиняюсь, я понимаю, что я не сделал это очень ясно. Метод max() является проблемой, у меня пока нет метода, поскольку я не уверен, как его реализовать. Я предполагаю, что он будет использовать метод compareTo для сортировки списка, а затем вернуть наибольшее значение (которое будет первым), но часть итератора меня бросила. Cheers –