排序 java.util.Deque
Sort java.util.Deque
我想使用 Card
class' getRealValue()
方法对 Deque<Card>
collection 的内容进行排序。
public class Card implements Comparable<Card> {
private final int value;
private final CardType cardType;
public Card(int value, CardType cardType) {
this.value = value;
this.cardType = cardType;
}
public int getRealValue() {
int realValue = this.value == 1 ? 52 : 0;
return realValue + this.value * 4 + this.cardType.ordinal();
}
public int compareTo(Card o) {
return this.getRealValue() - o.getRealValue();
}
}
这是我的 CardType 枚举
public enum CardType {
CLUB("♣"),
SPADE("♠"),
HEART("♥"),
DIAMOND("♦");
public final String icon;
private CardType(String icon) {
this.icon = icon;
}
}
我想根据 realValue()
对我的双端队列进行排序
好吧,你总是可以清除它,re-insert元素的顺序正确:
Card[] a = deque.toArray(new Card[0]);
Arrays.sort(a);
deque.clear();
for (Card card : a) {
deque.add(card);
}
牢记这一点的表现。如果排序是您的结构的要求,请考虑使用 PriorityQueue
.
我想使用 Card
class' getRealValue()
方法对 Deque<Card>
collection 的内容进行排序。
public class Card implements Comparable<Card> {
private final int value;
private final CardType cardType;
public Card(int value, CardType cardType) {
this.value = value;
this.cardType = cardType;
}
public int getRealValue() {
int realValue = this.value == 1 ? 52 : 0;
return realValue + this.value * 4 + this.cardType.ordinal();
}
public int compareTo(Card o) {
return this.getRealValue() - o.getRealValue();
}
}
这是我的 CardType 枚举
public enum CardType {
CLUB("♣"),
SPADE("♠"),
HEART("♥"),
DIAMOND("♦");
public final String icon;
private CardType(String icon) {
this.icon = icon;
}
}
我想根据 realValue()
好吧,你总是可以清除它,re-insert元素的顺序正确:
Card[] a = deque.toArray(new Card[0]);
Arrays.sort(a);
deque.clear();
for (Card card : a) {
deque.add(card);
}
牢记这一点的表现。如果排序是您的结构的要求,请考虑使用 PriorityQueue
.