排序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);
}