54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王,黑桃A-K, 红心A-K, 草花A-K,方块A-K.

来源:互联网 发布:oracle闪回恢复数据 编辑:程序博客网 时间:2024/05/01 19:13
方式一
package com.james.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

public class Poker
{
    int color;// 花色 1.大王,小王,2.黑桃,3.红心,4.草花,5.方块
    int id;// 扑克字面值 大王1,小王2,其他花色1-13 分别代表A-K

public Poker(int color, int id)
{
    this.color = color;
    this.id = id;
}

public int getColor()
{
    return color;
}

public int getId()
{
    return id;
}

public static void Display(List<Poker> l)
{
    Iterator<Poker> it = l.iterator();
    while (it.hasNext())
   {
     Poker pk = it.next();
     System.out.println("Color:" + pk.getColor() + " ,Id:" + pk.getId());
   }
}

public static void main(String[] args)
{
    Poker p0 = new Poker(1, 1);// 大王
    Poker p1 = new Poker(1, 2);// 小王
    int n = 4;// 普通花色种类
    int m = 13;// 普通花色扑克字面值上限 
    Poker[] p = new Poker[52];// 普通花色扑克
    // 构建扑克数组
    for (int i = 0; i < n; i++)
           for (int j = 0; j < m; j++)
                  p[i * m + j] = new Poker(i + 2, j + 1);
    List<Poker> l = new ArrayList<Poker>();
    // 扑克倒序插入List中(这里为了简单只是倒序,也可以写方法随机打乱顺序)
for (int i = p.length - 1; i >= 0; i--)
       l.add(p[i]);
       l.add(p0);
       l.add(p1);

// 实例化一个比较器,用于给List排序
Comparator<Poker> cmp = new Comparator<Poker>()
   {

@Override
public int compare(Poker o1, Poker o2)
{
/*
 * 排序使用的规则 先按花色排序,如果花色相同再按字面值排序
 */
    int color1 = o1.getColor();
    int color2 = o2.getColor();
    if (color1 < color2)
         return -1;
    if (color1 > color2)
         return 1;
    // 花色相同
    int id1 = o1.getId();
    int id2 = o2.getId();
    if (id1 < id2)
      return -1;
    if (id1 > id2)
      return 1;
    // 花色和字面值都相同
    return 0;
   }
};

   System.out.println("排序前List的内容:");
   Display(l);

   // 给list排序
   Collections.sort(l, cmp);

   System.out.println("排序后List的内容:");
   Display(l);
}
}

方式二
package test;
import java.util.ArrayList;
import java.util.List;
public class Pk {
public static void main(String[] args) {
  String[] suit={"黑桃","红桃","樱花","方块"};
  String[] rank={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
  List cards =new ArrayList();
  cards.add("大王");
  cards.add("小王");
  for (int i = 0; i < suit.length; i++) 
    for (int j = 0; j < rank.length; j++) 
         cards.add(suit[i]+rank[j]);
  for (int i = 0; i <cards.size(); i++) {
    if(i==1 || (i-1)%13==0)
      System.out.println(cards.get(i));
    else
      System.out.print(cards.get(i)+" ");
    }
 }
}
0 0