Java中可以使用固定格式的自动排序,这是在序列中的一个功能函数,通过comparable接口来实现。枚举类型更像是一个集合或类,使用它的成员就相当于调用私有变量,需要使用枚举类的对象来实现,枚举类型的排列顺序也表示大小的顺序。纸牌排序的具体实现如下:
Rank.java中:
/*定义纸牌的13张牌,最小的是2,最大的是A*/
public enum Rank {
TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE
}
/*定义纸牌的四种花色*/
public enum Suit {
CLUBS,DIAMONDS,HEARTS,SPADES
}
Card.java中
/*将纸牌的花色和数字的大小组合成纸牌的属性,要使用自动排序函数,必须要实现comparable接口,并定义排序函数*/
public class Card implements Comparable<Card> {
public Card(Rank rank,Suit suit){
this.rank=rank;
this.suit=suit;
}
private Suit suit;
private Rank rank;
@Override
public String toString(){
return rank+" of "+suit;
}
public int compareTo(Card card){
if(suit.equals(card.suit)){
if(rank.equals(card.rank)){
return 0;
}
return rank.compareTo(card.rank);
}else{
return suit.compareTo(card.suit);
}
}
}
TryVector.java中
import java.util.*;
import java.io.*;
public class TryVector {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
Card Pcard1 = new Card(Rank.JACK,Suit.HEARTS);
Card Pcard2 = new Card(Rank.EIGHT,Suit.SPADES);
Card Pcard3 = new Card(Rank.FIVE,Suit.CLUBS);
Card Pcard4 = new Card(Rank.SIX,Suit.DIAMONDS);
Card Pcard5 = new Card(Rank.TWO,Suit.HEARTS);
Vector<Card> cardCast = new Vector<Card>();
cardCast.add(Pcard1);//将现有纸牌整合在一个序列中
cardCast.add(Pcard2);
cardCast.add(Pcard3);
cardCast.add(Pcard4);
cardCast.add(Pcard5);
Collections.sort(cardCast);//对纸牌进行排序,先根据花色,再根据数字
System.out.println("\nThe cast in ascending sequence is:\n");
for(Card card:cardCast){
System.out.println(card);
}
}
}
实现结果如下: