import java.util.*; class Demo { public static void main(String[] args) {
//定义两个数组一个存储扑克牌的花色,一个存储扑克牌的点数 String[] color = {"黑桃","红桃","梅花","方块"}; String[] number = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; StackList list = new StackList();
//利用双重for循环,按花色和点数从小到大添加到list集合中 for (int i = 0;i < 4 ;i++ ) { for (int j = 0;j < 13 ;j++ ) { list.add(new Poker(color[i],number[j])); } }
//输出按顺序添加好扑克牌的集合 System.out.println(list.list);
//创建一个随机数对象 Random random = new Random(); int a = 0;
//创建一个新的集合用来存储洗好的扑克牌 StackList newList = new StackList();
//循环添加扑克牌,一共52张 while (a < 52) {
//随机产生一张扑克牌 Object poker = list.get(random.nextInt(52));
//判断新的集合中是否存在随机产生的扑克牌,如果存在则不添加到新的集合中 if (!newList.contains(poker)) { newList.add(poker); } a = newList.size(); }
//输出洗完牌后的集合 System.out.println("\n\n洗完牌后:" + newList.list); } } class Poker {
//重写toString方法,如果不重写则返回的是哈希值 public String toString(){ return color + number; }
//重写equals方法,比较花色和点数是否都是一样的,都一样则返回true否则返回false public boolean equals(Object obj){ Poker n = (Poker)obj; return this.color.equals(n.color) && this.number.equals(n.number); } } class StackList { LinkedList list;
//Stack List的构造方法 public StackList(){ list = new LinkedList(); }
//StackList的add方法 public void add(Object m){ list.offer(m); }
//StackList的poll方法 public Object poll(){ return list.poll(); }
//StackList的size方法 public int size(){ return list.size(); }
//Stack List的get方法 public Object get(int index) { return list.get(index); }
//StackList的comtains方法 public boolean contains(Object o){ return list.contains(o); } }