[英]Method for returning highest value in a list using iterator (Java)
我正在使用 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;
}
}
}
如果您只需要最大值,则不需要实际对列表进行排序。 反而:
it.hasNext() == true
it.next()
) 存储在一个变量中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.