Java.util.Collections类下有一个静态的shuffle()方法,如下:

1)static void shuffle(List<?> list)  使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。

2)static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。

通俗一点的说,就像洗牌一样,随机打乱原来的顺序。

注意:如果给定一个整型数组,用Arrays.asList()方法将其转化为一个集合类,有两种途径:

1)用List<Integer> list=ArrayList(Arrays.asList(ia)),用shuffle()打乱不会改变底层数组的顺序。

2)用List<Integer> list=Arrays.aslist(ia),然后用shuffle()打乱会改变底层数组的顺序。代码例子如下:

package com.item.test;
import java.util.*;public class T1 {public static void main(String[] args){Random rand=new Random(54);Integer[] ia={0,1,2,3,4,5,6,7,8,9};List<Integer> list=new ArrayList<Integer>(Arrays.asList(ia));System.out.println("前 shufflig: "+list);Collections.shuffle(list,rand);System.out.println("后 shuffling: "+list);System.out.println("数组: "+Arrays.toString(ia));List<Integer> list1=Arrays.asList(ia);System.out.println("前 shuffling: "+list1);Collections.shuffle(list1,rand);System.out.println("后 shuffling: "+list1);System.out.println("数组: "+Arrays.toString(ia));}
}

效果:

所以接上一篇文章:【Java扑克牌(enum)】

package com.item.test;import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;public class Action {public static void main(String[] args) {//随机卡牌List<Card> list=ResetCard(StartCard());int i=0;for (Card c:list) {if(i%3==0){System.out.println();}System.out.print(c.getIndex()+":"+c.getName()+"\t");i++;}}/*** 随机排序* @param list* @return*/public static List<Card> ResetCard(List<Card> list){Collections.shuffle(list);return list;}/*** 初始化卡牌* @return*/public static List<Card> StartCard(){List<Card> list=new ArrayList<>(54);int i=0;for (CardsEnum cardsEnum:CardsEnum.values()) {for (CardColorEnum cardColorEnum:CardColorEnum.values()) {list.add(new Card(cardsEnum,cardColorEnum,i++));}}Card big=new Card();big.setName(CardBossEnum.BIG.getName());big.setIndex(i++);Card small=new Card();small.setName(CardBossEnum.SMALL.getName());small.setIndex(i++);list.add(big);list.add(small);return list;}
}

效果如下:

上篇文章地址:【https://blog.csdn.net/feng8403000/article/details/114792614】

Java扑克牌(洗牌Collections.shuffle)相关推荐

  1. Java扑克牌洗牌代码

    public class p18 {public static void main(String[] args) {//扑克牌洗牌 52张//数组下标就是值//0--12 13--25 26--38 ...

  2. 扑克牌洗牌发牌java代码_java实战(一)之Java模仿斗地主洗牌发牌小游戏

    斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异.本节我们先来实现一下斗地主中的简单洗牌.发牌和看牌功能. 按照斗地主的规则,完成洗牌发牌的动作.具体规则为使用 54 张牌打乱顺序,3 ...

  3. java 斗地主洗牌发牌

    斗地主游戏共有三名玩家参与,首先将54张牌的顺序打乱,每人轮流摸牌,剩余三张做底牌.54张牌四种花色. 此案例只有一个Test类 Test测试类 package anli06_4;import jav ...

  4. Java项目:模拟扑克牌洗牌发牌排序

    用JAVA实现简单的扑克牌洗牌发牌并排序,首先写代码之前需要明确需要分哪些步骤: 创建一个HashMap集合对象 创建一个ArrayList集合对象 生成一副扑克牌 将扑克牌按照键值关系添加到Hash ...

  5. 用JAVA实现简单的扑克牌洗牌发牌并排序

    用JAVA实现简单的扑克牌洗牌发牌并排序,首先写代码之前需要明确需要分哪些步骤: 创建一个HashMap集合对象 创建一个ArrayList集合对象 生成一副扑克牌 将扑克牌按照键值关系添加到Hash ...

  6. 用java制作扑克牌_Java实现扑克牌洗牌和发牌

    本文实例为大家分享了Java实现扑克牌洗牌发牌的具体代码,供大家参考,具体内容如下 实现原理:使用4种花色和13个数字组合成52张牌,放进一个集合中:通过把集合数据排序打乱实现洗牌操作,然后在通过循环 ...

  7. 用java制作扑克牌_Java模拟扑克牌洗牌实现生成52张扑克的方法示例

    本文实例讲述了Java模拟扑克牌洗牌实现生成52张扑克的方法.分享给大家供大家参考,具体如下: 要求: 生成52张扑克,模拟扑克牌洗牌,并输出. 实现代码: package com.NCU.ZHANG ...

  8. Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习

    目录 1.大众麻将洗牌小程序 1.1实现效果 1.2源码展示 2.扑克牌洗牌小程序 2.1实现效果 2.2源码展示 1.大众麻将洗牌小程序 大众麻将有3种牌色分别为万.条.筒.每种牌色有9张,如一万到 ...

  9. 【实现一个扑克牌洗牌游戏,然后给三个玩家洗牌发牌】

            实现一个扑克牌洗牌游戏,    第1个集合:存储所有数字(2345678910JQKA)    第2个集合:存储所有花色()    将第1个集合和第2个集合混合,再加上两张鬼牌组成54 ...

最新文章

  1. Go 分布式学习利器(13)-- Go语言的多态
  2. C# GDAL 学习一
  3. HTTP基础认证Basic Authentication
  4. tensorflow,显卡驱动,CUDA傻傻分不清
  5. redis 哨兵_Redis哨兵配置
  6. 利用dbms_metadata.get_ddl查看DDL语句(原创)
  7. c++初始化成员列表_C++ 类构造函数初始化列表
  8. 年轻人创业可以选择的3个方向
  9. 谈谈WCF中的Data Contract(2):WCF Data Contract对Generic的支持
  10. eclipse如何安装java decompiler反编译插件
  11. Java学习笔记之设计模式(6)观察者模式
  12. 线性与非线性规划问题求解
  13. Systemd基础篇:systemd vs SysVinit
  14. Java 战国大富翁,中国古代八大富翁,比皇帝还有钱!其中三位是历史上公认的商圣...
  15. 怎么把cad的图导入ps_CAD图纸快速高效导入PS的方法
  16. 知识图谱-KGE-语义匹配-双线性模型-2019:QuatE
  17. Unity粒子系统基本
  18. 因微信网页授权调整解决方案
  19. BeanUtils.populate()封装bean属性为null的四种失效原因
  20. 小散量化炒股记|基于多任务爬虫技术, 实现A股实时行情Level1采样

热门文章

  1. springboot异步注解_SpringBoot如何实现异步、定时任务?
  2. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-逻辑回归与交叉熵概述-05
  3. 计算机与现代化投稿流程,计算机与现代化投稿须知
  4. YouCompleteMe unavailable: requires Vim compiled with Python 2.x support
  5. create-react-app 构建的项目使用 mobx (说到底就是为了使用装饰器语法对 babel 做些配置...
  6. vue组件实现查看大图效果
  7. yum 安装mariadb
  8. COJ 1006 树上操作
  9. 为app录制展示gif
  10. 什么是集群(cluster)