排序java.util.Deque
我想使用排序java.util.Deque,java,collections,arraydeque,Java,Collections,Arraydeque,我想使用Cardclass'getRealValue()方法对我的Deque集合的内容进行排序 public class Card implements Comparable<Card> { private final int value; private final CardType cardType; public Card(int value, CardType cardType) { this.value = value; this.cardTy
Card
class'getRealValue()
方法对我的Deque
集合的内容进行排序
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();
}
}
我想根据
realValue()
对我的数据进行排序。您可以随时清除它,然后按正确的顺序重新插入元素:
Card[] a = deque.toArray(new Card[0]);
Arrays.sort(a);
deque.clear();
for (Card card : a) {
deque.add(card);
}
记住这一点。如果排序是结构的要求,请考虑使用<代码> PrimeRealQue>/Calp>。< /P>在<代码>卡<代码>中实现<代码> COMPRATEOT/<代码>方法…否则,代码>实现可比的<代码>是无用的。您不能排序DEQE,这是一个队列。因此,将它复制到一个列表中,使用比较器对其进行排序,然后将其放回序列中。我实现了
compareTo()
,只是碰巧,我没有把所有的代码都放进去,现在将问题更新为放入compareTo()
。您使用的是Deque
的什么实现?你能把代码显示在使用它的地方吗?我使用的是ArrayDeque
而不是for
循环,你可以使用它(至少在OpenJDK中,它是以同样的方式实现的:,)。
Card[] a = deque.toArray(new Card[0]);
Arrays.sort(a);
deque.clear();
for (Card card : a) {
deque.add(card);
}