最近看到一篇短视频,里面就是说这个JAVA中的HashMap中的用法,举了一个很不错的例子,就是生活中常常玩的扑克牌斗地主,利用了一副新的扑克牌,所要经过的步骤,组合牌、洗牌、发牌、对玩家手中的牌进行一个排序!
我们是有疑惑的?扑克牌中有很多不一样的花色,牌的数字大小也不是我们生活中的那样排大小的,几乎是每个人都有这样的疑问,所以我们JAVA中有一个接口可以使用--------HashMap<键值,值>。
我先来介绍一下这个接口应该和我们这个扑克牌怎么组合使用呢,
我们知道扑克牌中的大小不是阿拉伯数字那样比大小排序的,而是根据我们打牌的规则来指定的。有大王,小王,2,A,K,Q..
大王是最大的,小王牌老二,但是我们在程序中怎么比较呢?所以这里我们可以用数组的下标来表示大王,小王,和其它的数字,
我先说一下流程你们就会明白的,组合牌:(首先我们先将牌拿到手,然后用数组的下标表示大王,小王这些字符),
洗牌:(由于HashMap不用直接打乱它的(键值),所以我们在这里用了其他的一个数组ArratList来代替它使用,我们将花色字符串和编号字符串相加组合,将组合好的,放入HashMap中的第二个参数(值),第一个参数放的就是用编号来表示第二个参数的内容,ArrayList中的内容也和HashMap的数字一样,我们先不放大王,和小王,我们先将数字放进去和花色组合起来,最后我们只要将表示大王的数字放入HashMap和ArratList中就行了,将表示好的数字都以经放入到数组中之后,我们就要进行洗牌了,那怎么洗牌呢?我们用到了一个工具类,是专门对数组进行随机排序的,Collections.shuffle(ArrayList放入就可以随机的排序));
发牌: 发牌当然是每个玩家一张一张的拿,玩家1拿一张 玩家2拿一张 玩家3拿一张 依次类推。这些玩家拿的不是真正的牌,而是们刚打乱的数组序号,所以每个玩家拿的是数字序号,从0到53张每个人17张,这些玩家拿的是ArrayList数组中的编号,ArrayList的作用就是帮助HashMap干这事的。
显示玩家手中的牌:每一个玩家手中的牌都要依次显示,我们可以将每个玩家手中的序号查找一开始HashMap中已经组合好的字符串中的键值,我们通过键值查找值,玩家手中已经有这洗完牌的序号,然后通过这个序号和HashMap中查找,并且打印出来,这样我们就实现了。。不用的还可以私聊我!