1. 程式人生 > >利用集合的靜態方法Collections.shuffle() 亂序集合中的元素,實現自動理牌

利用集合的靜態方法Collections.shuffle() 亂序集合中的元素,實現自動理牌

import java.util.*;

public class Card {
	public static enum Face{紅心, 方塊, 草花, 黑桃};

	public static enum Deck{ one, two, three, four, five, six, seven, eight,
			nine, ten, eleven, tweleve, thirteen };
	
	/**
	 * 
	 * 私有變數將從列舉Face, Deck中獲得值,那麼其返回值應該定義成列舉(enum)嗎?
	 * 是的,但是需要使用Face face, Deck deck;
	 *
	 */
	private Face face;  
	private Deck deck;
			
	public Card(Face faceVal, Deck deckVal)  //和上面解釋一樣,型別就用列舉的名稱
	{
		face = faceVal;
		deck = deckVal;
	}
	
	public String toString()
	{
		return String.format("%s of %s", deck, face);
	}
	
	public static void main(String argc[])
	{
		Card card[] = new Card[52];
		int counter = 0;
		
		for ( Card.Face faceVal : Card.Face.values())
		{
			for (Card.Deck deckVal :Card.Deck.values() )
			{
				card[counter++] = new Card(faceVal, deckVal);
			}
		}
							
		List <Card> list = Arrays.asList(card); // 將陣列轉化成collection
							
		Collections.shuffle(list);   //利用集合(collections)的靜態方法,打亂list集合順序
		Card[] card2 = new Card[52]; //建立新陣列
		list.toArray(card2);		 //將collection轉換成陣列,以便輸出
		
		int x =1;
		 
		 for (Card c : card2)
		 {
			 System.out.println(c +" "+ (x++) );
		 }
			
	}
	
	
	
}