码农的世界简书回收站

2019-01-01

2019-01-01  本文已影响2人  DreamPath

Day10 Collection、泛型类,及其扑克牌案例

1.Collection集合

1.1 集合的概述

集合是java中提供的一种容器,可以来存储多个数据,长度不固定。

1.2 集合框架

1.3 Collection 常用功能

image

2.Iterator迭代器

2.1.java.util.Iterator是一个遍历集合得接口,故也称为迭代器。

Student类省略
2.2 增强for循环
image

3.泛型

3.1能将指定集合的元素类型进行添加

     其中包括字符串String,Integer,Double,Long,Boolean,还能自定义泛型类。方法,接口,以及泛型通配符<?>。

3.2使用泛型的好处:

1.将运行时期的ClassCastException,转移到了编译时期变成了编译失败。

2. 避免了类型强转的麻烦。

3.3受限泛型的使用

1.泛型的上限:

格式: 类型名称 <? extends 类 > 对象名称

意义: 只能接收该类型及其子类

2.泛型的下限:

格式: 类型名称 <? super 类 > 对象名称

意义: 只能接收该类型及其父类型

(short boolean int double float byte char string)-->Number-->Object

java学习之扑克牌案例

package pocker;
import java.util.ArrayList;
import java.util.Collections;
/**
 * 需求:  三个玩家 玩斗地主  每个人拿17  最后剩下3张牌
 * 分析:
 *      创建一个集合存放2,3,4,5,6,7,8,9,10
 *      创建一个集合存放字母:J,Q,K,A
 *      再创建一个集合存放花色 ♦ ,♣,♠,♥。
 *      创建好牌以后进行洗牌使用Collections的工具类中的一个方法来打乱牌的顺序
 *      然后需要创建三个玩家
 *      每个玩家都会存放自己的牌,因此需要定义玩家集合
 *      然后在定义当索引小于51时需要将牌分别存放在三个玩家手上。
 *      大于等于51也就是三张底牌直接存放在底牌的集合中
 */
public class Poker_demo {
    public static void main(String[] args) {
     //创建牌
        //创建牌盒的集合
      ArrayList<String> pokers=new ArrayList<>();
        //存放数字及其J Q K A
        ArrayList<String> list = new ArrayList<>();
        for (int i = 2; i <=10; i++) {
         //将Integer类型直接转换成String添加到集合中
            list.add(i+"");
        }
        list.add("J");
        list.add("Q");
        list.add("K");
        list.add("A");
        //存放花色
        ArrayList<String> color = new ArrayList<>();
        color.add("♦");
        color.add("♣");
        color.add("♠");
        color.add("♥");
       // 拿出每一个花色  然后跟每一个数字 进行结合  存储到牌盒中
        for (String str:color) {
            for (String st:list) {
                String sts=str+st;
                pokers.add(sts);
            }
        }
        pokers.add("大王🃏");
        pokers.add("小王🃏");

        //遍历一下这个集合
        for (int i = 0; i <pokers.size(); i++) {
            System.out.println(pokers.get(i));
        }
 //   洗牌
    xiPai(pokers);

 //发牌
    FaPai(pokers);
    }
    private static void FaPai(ArrayList pokers) {
        ArrayList<String> wanJia1 = new ArrayList<>();
        ArrayList<String> wanJia2 = new ArrayList<>();
        ArrayList<String> wanJia3 = new ArrayList<>();
        ArrayList<String> diPai = new ArrayList<>();
        //一共有54张牌,每个人17张之后需要剩下3张作为底牌,51张牌是每个人必须的牌
        for (int i = 0; i <pokers.size(); i++) {
            String po = String.valueOf(pokers.get(i));
            if (i>=51) {
                diPai.add(po);  }
                else {

                if (i % 3 == 0) {
                    wanJia1.add(po);
                } else if (i % 3 == 1) {
                    wanJia2.add(po);
                } else if (i % 3 == 2) {
                    wanJia3.add(po);
                }
            }
        }
        System.out.println("玩家一的牌:"+wanJia1);
        System.out.println("玩家二的牌:"+wanJia2);
        System.out.println("玩家三的牌:"+wanJia3);
        System.out.println("底牌:"+diPai);
    }
    private static void xiPai(ArrayList pokers) {
        Collections.shuffle(pokers);
    }
}

思考:
1.那怎么去将底牌发给地主呢,又如何去确定地主?
2.三个玩家手中的牌又如何来再次排序呢?

上一篇下一篇

猜你喜欢

热点阅读