我正在研究Java中的卡片类,我不确定某种方法的实现。我需要包含一个静态方法(我称之为max),它使用compareTo方法查找并返回卡片列表中的最高价值卡片。但是,我需要使用迭代器来遍历列表。
下面是我实现的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)];
}
}
我不想包括整个类,所以事情不会让人感到困惑,但它包含了Rank和Suit类型的变量,等级和套装以及单个构造函数。 rank和suit的访问器方法和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;
}
}
}
答案 0 :(得分:0)
如果您只需要最大值,则无需对列表进行实际排序。代替:
it.hasNext() == true
it.next()
)存储在变量