`
lqy1234567
  • 浏览: 5894 次
社区版块
存档分类
最新评论

随机不重复的数组使用Java来实现

阅读更多

 今天突然想起来以前看书的时候看见过一个编程题,要求是生成一副扑克牌并且模拟一下发牌的动作。

这个问题对很多人来说已经不是问题了,但是还是难倒了我这个刚入门的初学者。当初这个问题让我头疼的地方就是怎么去得到一个随机不重复的数组。

上网查了一查,这个其实有很多种思路。

 

 

例如:在这里就列出了Java实现随机不重复的三种思路http://www.javaeerun.com/jr_1378708438508.html

 

1 本身这个数组是按照顺序排放的,然后我们把这个数组里面数据的顺序打乱,再从第一个元素开始逐个获取

2 本身这个数组是按照顺序排放的,然后我们随机的从里面抽取元素发出去。

3 通过随机数直接生成随机的元素,然后比对数组里面是否有相同的元素,比对通过就放进去。

 

就按照做一做吧

首先是扑克牌类Card:

 

package com.javaeerun.demo.carddemo;
 
public class Card {
    private String assortment;
    // 花色
    private int number;
    // 数值
    public static final String CARD_ASSORTMENT[] = { "Spade", "Heart",
            "Diamond", "Club", "Red Joker", "Black Joker" };
 
    // 黑桃 红桃 方片 梅花 大王 小王
    public Card(String assortment, int number) {
        super();
        this.assortment = assortment;
        this.number = number;
    }
 
    public String getAssortment() {
        return assortment;
    }
 
    public void setAssortment(String assortment) {
        this.assortment = assortment;
    }
 
    public int getNumber() {
        return number;
    }
 
    public void setNumber(int number) {
        this.number = number;
    }
 
    @Override
    public String toString() {
        return "Card [assortment=" + assortment 
                + ", number=" + number + "]";
    }
 
}

 接下来是Main:

 

 

package com.javaeerun.demo.carddemo;
 
import java.util.LinkedList;
import java.util.List;
 
public class Main {
    public static void main(String[] args) {
        Main main=new Main();
        List<Card> cardList = main.createCardList();
        //获取一个按照顺序排列的扑克牌,一共54张
        while(cardList.size()>0){
        //只要list里面有元素就取出来  
            int i=(int)(Math.random()*cardList.size());
            System.out.println(cardList.get(i).toString());
            cardList.remove(i);
            //把获得的元素从list里面删除
        }
    }
     
    public List<Card> createCardList(){
        //这个方法获取一个按照顺序排列的扑克牌
        List<Card> cardList = new LinkedList<Card>();
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j < 14; j++) {
                cardList.add(new Card(Card.CARD_ASSORTMENT[i], j));
            }
        }
        cardList.add(new Card(Card.CARD_ASSORTMENT[4], 0));
        cardList.add(new Card(Card.CARD_ASSORTMENT[5], 0));
        return cardList;
    }
}

 这样就完成了。

 

 

分享到:
评论

相关推荐

    4种思路随机乱序输出数组元素

    Java数组随机不重复输出数组元素的不同解法,大家探讨。

    从n个数组中取出所有排列组合(Java实现)

    从n个数组中取出所有排列组合(Java实现)

    数组放不重复的随机数

    使用java语言,随机出不重复的随机数放进数组里。

    java利用数组随机抽取幸运观众

    主要为大家详细介绍了java利用数组随机抽取幸运观众,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java 中实现随机无重复数字的方法

    为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100 的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    Java 容器.pdf_电子版pdf版

    1. Set:不允许重复的集合,常用的实现类有 HashSet、TreeSet、LinkedHashSet 等。 * HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。 * TreeSet:基于红黑树实现,支持有序性操作,但查找效率不如 ...

    javascript获取不重复的随机数的方法比较

    随机不重复_www.jb51.net 软件开发网 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 不重复的随机数方案2:297毫秒 但是方案1采用了slice方法,此方法重新生成数组,会大量占用内存和cpu运算, 效率很低,...

    Java获取随机不重复的数得值

    假如我有一个数组: ...  我需要从中随机抽取2个数 不能重复抽取,我会用这个方法  public void getValue(ArrayList&lt;Integer&gt; mArrayList){  Random mRandom = new Random();  int a = mRandom.

    Java实现随机无重复数字功能

    本文给大家介绍如何在JAVA中实现随机无重复数字的功能。如果您是初学者的话,有必要看一看这篇文章,因为这个功能一般会在面试中遇到。包括我本人在招聘人员的时候也喜欢拿这个问题去问别人,主要看一看考虑问题的...

    java jdk实列宝典 光盘源代码

    生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口java.util.Map,有四个实现类HashMap Hashtable LinkedHashMap TreeMap用法和区别;对Map排序; 5字符串 使用String;...

    java中级面试题(自己汇总)

    * HashSet如何元素不重复:先用HashCode判断地址是否相等,如相等再用equals方法比较。 HashMap、HashTable、ConcurrentHashMap * HashMap线程不安全的,HashTable线程安全的任一时间只有一个线程能写Hashtable,...

    2011 模拟 java 本科

    在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。请完善以下代码: 2. 代码填空(满分3分) 不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。下面的代码演示了如何把键盘输入的3进制数字转换...

    java集合-练习题.pdf

    本篇资源摘要信息主要讲解 Java 集合框架的相关知识点,包括 Collection 接口、List 接口、Set 接口、Map 接口的特点和区别,以及 ArrayList、LinkedList、Vector 等实现类的使用和区别。 一、Collection 接口的...

    java 课程 实验

    随机(1~30之间)生成7个随机数,注意不能重复。然后从键盘输入7个数,对比7个数是否与随机数有相同的。最后显示“中了几个号”。同时,如果中了7个号,显示一等奖;如果中了6个号,显示二等奖;如果中了5个号,显示...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 76 实例061 格式化当前日期 77 实例...

Global site tag (gtag.js) - Google Analytics