浏览 8534 次
锁定老帖子 主题:如何随机抽取hashmap中的元素?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-20
想想啊 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-20
List list = new ArrayList(hashmap.values());
int pos = (int)Math.floor(Math.random()*list.size()); Object obj = list.get(pos); |
|
返回顶楼 | |
发表时间: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; } 先谢谢楼上。我用了这种方法解决了 |
|
返回顶楼 | |
发表时间:2007-06-21
为什么多转一次到ARRAY?
|
|
返回顶楼 | |
发表时间:2007-06-21
不转到array里,在Collection里可以实现随机取元素吗?
|
|
返回顶楼 | |
发表时间:2007-06-21
slikyn 写道 不转到array里,在Collection里可以实现随机取元素吗?
楼上的同志不是写给你看了吗? 引用 int pos = (int)Math.floor(Math.random()*list.size());
Object obj = list.get(pos); |
|
返回顶楼 | |
发表时间:2007-06-21
lordhong 写道 slikyn 写道 不转到array里,在Collection里可以实现随机取元素吗?
楼上的同志不是写给你看了吗? 引用 int pos = (int)Math.floor(Math.random()*list.size());
Object obj = list.get(pos); 内部实现几乎是一样的,我倒觉得转换为数组,比转换为list好一些。 |
|
返回顶楼 | |
发表时间: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一个数组,就没意义了。 |
|
返回顶楼 | |
发表时间:2007-06-23
将hashmap转为arrayList 就可以解决了。
|
|
返回顶楼 | |