`
slikyn
  • 浏览: 27015 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类

如何随机抽取hashmap中的元素?

阅读更多
有一个hashmap,我们不知道他的key,现在想从这个hashmap中随机抽取一个元素,应该怎么做呢?
想想啊
分享到:
评论
8 楼 newlife 2007-06-23  
将hashmap转为arrayList 就可以解决了。
7 楼 weiqingfei 2007-06-21  
int ticketsAmount=cabin.size();
Tickets []ticketArray=(Tickets [])ticketCollection.toArray(new Tickets[0]);

改为
int ticketsAmount=cabin.size();
Tickets []ticketArray=(Tickets [])ticketCollection.toArray(new Tickets[ticketsAmount]);

既然知道大小,内部再多new一个数组,就没意义了。
6 楼 weiqingfei 2007-06-21  
lordhong 写道
slikyn 写道
不转到array里,在Collection里可以实现随机取元素吗?


楼上的同志不是写给你看了吗?

引用
int pos = (int)Math.floor(Math.random()*list.size());
Object obj = list.get(pos);


内部实现几乎是一样的,我倒觉得转换为数组,比转换为list好一些。
5 楼 lordhong 2007-06-21  
slikyn 写道
不转到array里,在Collection里可以实现随机取元素吗?


楼上的同志不是写给你看了吗?

引用
int pos = (int)Math.floor(Math.random()*list.size());
Object obj = list.get(pos);
4 楼 slikyn 2007-06-21  
不转到array里,在Collection里可以实现随机取元素吗?
3 楼 lordhong 2007-06-21  
为什么多转一次到ARRAY?
2 楼 slikyn 2007-06-20  
    /**
     * 从存储机票的hashmap中随机抽取一张票
     * 先将hashmap转化成collection,再将collection转化成array,再从array中随机抽取一张票,并得到它的序列号
     * @param cabin 存储机票的hashmap
     * @param ticketCollection 存储机票的Collection
     * @param ticketsAmount 记录剩余机票的数量
     * @param ticketArray 存储机票的array
     * @param ticketsNumber 随机抽取机票的序列号
     * @return 返回抽中机票的序列号
     */
    String getRandomTicketNumber(HashMap cabin){
    Collection ticketCollection=cabin.values();
    int ticketsAmount=cabin.size();
    Tickets []ticketArray=(Tickets [])ticketCollection.toArray(new Tickets[0]);
   
    Random random=new Random();
    String ticketsNumber=ticketArray[random.nextInt(ticketsAmount)].getSerialNumberOfTicket();
    return ticketsNumber;
    }

先谢谢楼上。我用了这种方法解决了
1 楼 Godlikeme 2007-06-20  
List list = new ArrayList(hashmap.values());
int pos = (int)Math.floor(Math.random()*list.size());
Object obj = list.get(pos);

相关推荐

    java list随机抽取元素的案例

    在这个案例中,我们将讨论如何从`List`中随机抽取元素。 **随机抽取元素的案例** 在提供的代码段中,定义了一个名为`createRandomList`的方法,它接受一个`List`和一个整数`n`作为参数,然后返回一个新的包含`n`个...

    使用面向对象的思想定义系统数据(会员和商品信息)、实现显示客户信息、添加客户和幸运大放送功能,并定义会员类,商品类进行数组存储

    这可能需要使用到Java的Random类来生成随机数,然后根据随机数选取数组中的某个元素。 为了更好地管理会员和商品,我们还可以考虑使用集合框架,如ArrayList或HashMap。ArrayList可以方便地添加、删除和遍历元素,...

    2023级大一Java基础期末考试口试题题库-15题随机问3题-音频

    这份题库包含了15个问题,其中随机抽取3题进行问答,形式可能是对关键概念的解释、代码分析或是编程问题的解答。 1. **类与对象**:Java是面向对象的编程语言,类是对象的蓝图。Q1可能涉及到如何定义一个类,包括...

    一亿取100数字Top100

    每次从堆中取出最小的元素,这样就能保证取出的是频率最低的数字,直到堆的大小达到100。堆排序的时间复杂度为O(n log k),其中k为要找的数字数量,这里是100。 4. **快速选择/快速排序**:如果内存有限,无法一次...

    系统设计资料

    - **概率抽样**:采用随机算法抽取样本,如简单随机抽样、分层随机抽样等。 - **近似算法**:如Flajolet-Martin算法,用于估计数据流中的基数。 - **滑动窗口**:结合滑动窗口技术处理连续数据流。 #### 十五、基数...

    SciWordRandomizer:Science Word 的抽认卡应用程序

    每个类都有其特定的功能,比如`Card`类可能包含问题和答案字段,`Deck`类则负责管理卡片的添加、删除和随机抽取,而`UserInterface`类则负责显示卡片并接收用户的反馈。 Java的事件驱动编程模型在这里起着关键作用...

    Java基础部 含答案

    1. **抽象**:抽象是指从具体事物中抽取出其本质属性和行为的过程,从而创建出通用的类或接口。在Java中,抽象类和接口是实现抽象的主要方式。通过抽象,可以隐藏复杂性,关注关键功能,提高代码的可读性和可维护性...

    经典面向对象思想 经典面向对象思想

    `ArrayList`和`LinkedList`都是`List`的实现类,但前者提供了随机访问的能力,后者则更适用于频繁插入和删除元素的情况。`HashMap`和`Hashtable`都是键值对存储的实现,但`HashMap`允许键和值为`null`,而`Hashtable...

    Java在线考试系统

    4. **随机出题**:为了保证考试公平性,系统可能采用随机算法从题库中抽取题目,确保每次考试的题目组合都不一样。 5. **答题界面**:考生可以看到题目,并在界面上填写答案。Swing的JTextComponent类(如JTextArea...

    Java软件开发实战 Java基础与案例开发详解 14-8 练习题 共6页.pdf

    常见的排序算法有冒泡排序、插入排序、选择排序等,这些算法可以对数组中的元素进行排序。 #### 4.5 增强for循环 增强for循环(也称为foreach循环)是一种更简洁的遍历数组或集合的方式,无需显式地管理索引。 ##...

    Java-Monopoly

    4. **随机数生成**:在掷骰子和抽取卡片等随机事件中,Java的Random类会派上用场,确保游戏结果的不可预测性。 5. **I/O操作**:保存和加载游戏进度可能涉及文件读写,开发者会使用FileInputStream和...

    Napakalaki:游戏Java卡

    宝藏是游戏中的关键元素,它们可能有各种类型,每种类型对应不同的价值和效果。因此,宝藏通常会设计成单独的类,每个实例代表一种特定的宝藏。宝藏类会包含宝藏的描述、价值以及对玩家的影响等信息。 游戏逻辑是...

Global site tag (gtag.js) - Google Analytics