1. 集合框架工具类和方法
1.1. Arrays(掌握)
Arrays类是数据的工具类,其中有一个方法比较常用。
- public static <T> List<T> asList(T… a):该方法可以把一个Object数组转换为List集合。
注意通过Arrays.asList方法得到的List对象的长度是固定的,不能增,也不能减。
1.2. Collections(了解)
Collections是集合的工具类,封装了Set、List、Map操作的工具方法,比如拷贝、排序、搜索、比较大小等。
1.3. 斗地主发牌案例(了解)
按照斗地主游戏的规则,模拟对54张扑克牌的洗牌和发牌以及对手中牌排序操作。
具体规则:
- 将54张不同花色的扑克牌打乱(♠♣♥♦☻)
- 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌
- 查看三人各自手中的牌(按照牌的大小排序)、底牌
- 手中扑克牌从大到小的摆放顺序:大王、小王、2、A、K、Q、J、10、9、8、7、6、5、4、3
该案例能够非常好的通过集合的操作来完成,对集合的操作也是一个很好的练习。
实现:
首先我们定义好基本的代码测试框架:
接下来,使用一个列表来记录四中花色:
然后,想办法添加牌面。牌面有2~A;一共四种花色,所以我们可以使用一个列表,来添加4份2~A的牌面:
牌面最终要和花色对应,为了后面的发牌操作方便,我们定义一个Map<Integer,String>,key是我们定义的排序,可以简单的理解为我们为每一张牌定义了一个编号,value就是具体的排面+花色,相当于每一张牌和一个具体的序号一一对应:
洗牌:
接下来定义三个玩家的牌列表,然后为最后剩下的底牌定义一个列表在存放:
发牌:
每个玩家手牌排序:
注意,到这里为止,每个玩家手上的牌,仍然不是具体的牌,只是每张牌对应的序号,接下来我们就要通过序号找到对应的牌:
看牌:
到此,发牌操作结束。
1.4. 集合框架小结
List、Set、Map选用
一般的在存储元素时候,是否需要给元素起一个名字:
- 需要:此时使用Map。
- 不需:存储的元素使用需要保证先后添加的顺序
- 需要:此时使用List
- 不需:此时使用Set(如果需要保证集合元素不重复,也选用Set)
本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。