Ran*_*las 2 java collections arraydeque
Deque<Card>我想使用Card类方法对集合的内容进行排序getRealValue()。
public class Card implements Comparable<Card> {\n private final int value;\n private final CardType cardType;\n\n public Card(int value, CardType cardType) {\n this.value = value;\n this.cardType = cardType;\n }\n\n public int getRealValue() {\n int realValue = this.value == 1 ? 52 : 0;\n return realValue + this.value * 4 + this.cardType.ordinal();\n }\n\n public int compareTo(Card o) {\n return this.getRealValue() - o.getRealValue();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的 CardType 枚举
\n\npublic enum CardType {\n CLUB("\xe2\x99\xa3"),\n SPADE("\xe2\x99\xa0"), \n HEART("\xe2\x99\xa5"), \n DIAMOND("\xe2\x99\xa6"); \n\n public final String icon;\n\n private CardType(String icon) {\n this.icon = icon;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我想根据以下内容对双端队列进行排序realValue()
那么您始终可以清除它并以正确的顺序重新插入元素:
Card[] a = deque.toArray(new Card[0]);
Arrays.sort(a);
deque.clear();
for (Card card : a) {
deque.add(card);
}
Run Code Online (Sandbox Code Playgroud)
请记住这一点的表现。如果您的结构需要排序,请考虑使用PriorityQueue.
| 归档时间: |
|
| 查看次数: |
6647 次 |
| 最近记录: |