控制台程序。

 public enum Rank {
TWO, THREE, FOUR, FIVE, SIX, SEVEN,
EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
}
 public enum Suit {
CLUBS, DIAMONDS, HEARTS, SPADES
}
 public class Card implements Comparable<Card> {
public Card(Rank rank, Suit suit) {
this.rank = rank;
this.suit = suit;
} @Override
public String toString() {
return rank + " of " + suit;
} // Compare two cards
public int compareTo(Card card) {
if(suit.equals(card.suit)) { // First compare suits
if(rank.equals(card.rank)) { // So check face values
return 0; // They are equal
}
return rank.compareTo(card.rank) < 0 ? -1 : 1;
} else { // Suits are different
return suit.compareTo(card.suit) < 0 ? -1 : 1; // Sequence is C<D<H<S
}
} private Suit suit;
private Rank rank;
}
 // Class defining a hand of cards
import java.util.Vector;
import java.util.Collections; public class Hand {
// Add a card to the hand
public void add(Card card) {
hand.add(card);
} @Override
public String toString() {
StringBuilder str = new StringBuilder();
boolean first = true;
for(Card card : hand) {
if(first) {
first = false;
} else {
str.append(", ");
}
str.append(card);
}
return str.toString();
} // Sort the hand
public Hand sort() {
Collections.sort(hand);
return this;
} private Vector<Card> hand = new Vector<>(); // Stores a hand of cards
}
 import java.util.Stack;
import java.util.Collections; public class CardDeck {
// Create a deck of 52 cards
public CardDeck() {
for(Suit suit : Suit.values())
for(Rank rank : Rank.values())
deck.push(new Card(rank, suit));
} // Deal a hand
public Hand dealHand(int numCards) {
if(deck.size() < numCards) {
System.err.println("Not enough cards left in the deck!");
System.exit(1);
} Hand hand = new Hand();
for(int i = 0; i < numCards; ++i) {
hand.add(deck.pop());
}
return hand;
} // Shuffle the deck
public void shuffle() {
Collections.shuffle(deck);
} private Stack<Card> deck = new Stack<>();
}

洗牌使用Collections类中一个静态的参数化方法shuffle()方法,该方法会打乱实现了List<>接口的任何集合中的内容。

 class TryDeal {
public static void main(String[] args) {
CardDeck deck = new CardDeck();
deck.shuffle(); Hand myHand = deck.dealHand(5).sort();
Hand yourHand = deck.dealHand(5).sort();
System.out.println("\nMy hand is:\n" + myHand);
System.out.println("\nYour hand is:\n" + yourHand);
}
}

Java基础之集合框架——使用堆栈Stack<>对象模拟发牌(TryDeal)的更多相关文章

  1. Java基础--说集合框架

    版权所有,转载注明出处. 1,Java中,集合是什么?为什么会出现? 根据数学的定义,集合是一个元素或多个元素的构成,即集合一个装有元素的容器. Java中已经有数组这一装有元素的容器,为什么还要新建 ...

  2. 黑马程序员——【Java基础】——集合框架

    ---------- android培训.java培训.期待与您交流! ---------- 一.集合框架概述 (一)集合框架中集合类关系简化图 (二)为什么出现集合类? 面向对象语言对事物的体现都是 ...

  3. Thinking in java基础之集合框架(转载)

    集合简介(容器)把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合,例如这里有20个苹果,我们把每一个苹果当成一个东西(一个对象),然后我们借用袋子把这20个苹果装起来,而这个袋子就是集合(也叫 ...

  4. java基础之集合框架

    6.集合框架: (1)为什么出现集合类? 面向对象对事物的体现都是以对象的形式,为了方便对多个对象的操作,就对对象进行存储. 集合就是存储对象最常用的一种方式. (2)数组和集合都是容器,两者有何不同 ...

  5. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  6. Java基础之集合框架(Collection接口和List接口)

    首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关 ...

  7. Java基础之集合框架——使用集合Vector<>挑选演员(TryVector)

    控制台程序. public class Person implements Comparable<Person> { // Constructor public Person(String ...

  8. Java基础之集合框架类及泛型简介

    Collection接口 Collection 通用的常见方法 add()添加一个元素,可以指定脚标 addAll()将一个collection放入 clear()清除 remove()删除元素,返回 ...

  9. java基础之集合框架--使用ArrayList类动态 存储数据

    一.ArrayList是List接口下的一个实现类,实现了长度可变的.连续的数组:拥有数组的特性. 遵循了LIst的规则:不唯一的.有序的. 如果没有增加泛型的话,集合中可以添加任何类型的数据. 使用 ...

随机推荐

  1. python 执行文件时传参

    ## test.py ## ####################### import sys if __name__ == "__main__": args = sys.arg ...

  2. 基础C++ functional

    函数对象:可以定义函数对象. sort(this->sprites.begin(), this->sprites.end(), [](const struct SpriteInfo &am ...

  3. DirectX 基础学习系列5 纹理映射

    1 纹理坐标 类似BMP图像坐标系,左上为原点 纹理坐标为了规范化,范围限定在[0,1]之间,使用纹理的时候,需要修改顶点结构 struct ColorVetex { float x, y,z; fl ...

  4. 使用 Vagrant 打造跨平台开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史. 我们可以通过 Va ...

  5. JAVA函数的返回值类型详解以及生成随机数的例题

    函数的四要素:函数名.输入.输出(返回).加工. 函数分为两种:一种是有返回值得函数,一种是没有返回值的函数. 1. 定义:没有返回值的函数:(当我不需要函数的计算结果再拿出来进行运算的时候,我就不需 ...

  6. 原生js实现跑马灯抽奖效果

    目前好多的微信活动都有一些抽奖活动,其中就有跑马灯. <!DOCTYPE html> <html> <head> <title>跑马灯效果</ti ...

  7. hbase基本命令

    基本命令  建表scores  具有两个列族grad 和courese create 'scores','grade', 'course' 查看当前HBase中具有哪些表 list 查看表结构 des ...

  8. readonly=“readonly”与readonly=“true”

    <input id="u" readonly /> <input id="u" readonly="readonly" / ...

  9. [LeetCode] Substring with Concatenation of All Words(good)

    You are given a string, S, and a list of words, L, that are all of the same length. Find all startin ...

  10. MVC 中的 ViewModel

    此文章总结自:http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applica ...