您的位置:首页 > 其它

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

2014-08-21 10:34 302 查看
方式一

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)+" ");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐