使用a ArrayList和a HashMap:[element - > index] 快速解决Java问题。

动机:我需要一组具有RandomAccess属性的项目,尤其是从集合中选择一个随机项目(参见pollRandom方法)。二叉树中的随机导航不准确:树不是完美平衡的,这不会导致均匀分布。public class RandomSet extends AbstractSet {

List dta = new ArrayList();

Map idx = new HashMap();

public RandomSet() {

}

public RandomSet(Collection items) {

for (E item : items) {

idx.put(item, dta.size());

dta.add(item);

}

}

@Override

public boolean add(E item) {

if (idx.containsKey(item)) {

return false;

}

idx.put(item, dta.size());

dta.add(item);

return true;

}

/**

* Override element at position id with last element.

* @param id

*/

public E removeAt(int id) {

if (id >= dta.size()) {

return null;

}

E res = dta.get(id);

idx.remove(res);

E last = dta.remove(dta.size() - 1);

// skip filling the hole if last is removed

if (id

idx.put(last, id);

dta.set(id, last);

}

return res;

}

@Override

public boolean remove(Object item) {

@SuppressWarnings(value = "element-type-mismatch")

Integer id = idx.get(item);

if (id == null) {

return false;

}

removeAt(id);

return true;

}

public E get(int i) {

return dta.get(i);

}

public E pollRandom(Random rnd) {

if (dta.isEmpty()) {

return null;

}

int id = rnd.nextInt(dta.size());

return removeAt(id);

}

@Override

public int size() {

return dta.size();

}

@Override

public Iterator iterator() {

return dta.iterator();

}}

c语言从集合中随机选取一个值,从集合中挑选一个随机元素相关推荐

  1. html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...

    jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办? 再做一个前台的ajax方法 查网上用formdate方法上传.可是进了接口之后一直在控制台获取不到for ...

  2. mysql 替换最后一个字符_怎么使用mysql语句替换某一个值的内容的最后一个指定的字符...

    如何使用mysql语句替换某一个值的内容的最后一个指定的字符 回答前请先看这个帖子http://bbs.csdn.net/topics/390705363?page=1#post-396787221 ...

  3. java中random方法取值范围_Java中的Random()函数

    今天在做Java练习的时候注意到了Java里面的一个随机函数--Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结: Java中存在 ...

  4. 根据list中某个字段的值排序_MySql中常用函数

    一.group_concat group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) group_conc ...

  5. php中颜色的索引值,计算PHP中两种颜色之间的平均颜色,使用索引号作为参考值...

    我们假设为了讨论的目的,每个颜色都有一个"值".那么,你想要的就足够简单: $index = 0.2; $val1 = get_value_of_color($color1); $ ...

  6. Js读取Cookie中指定字段的值,Js中读取某个Cookie,Js中根据Cookie的key得到对应的value,Js正则表达式匹配指定的Cookie

    Js中想要读取Cookie中指定字段的值,可以遍历Cookie根据指定Key提取Cookie,或者使用正则表达式匹配Cookie,代码如下: /*** @description: 遍历cookie得到 ...

  7. python 从字符串中随机选取4个字符_我需要一个Python函数,当给定字符的期望概率时,它将输出4个不同字符的随机字符串...

    对于四封信,我脑海中闪过的是:from random import random def randABCD(n, pA, pB, pC, pD): # assumes pA + pB + pC + p ...

  8. java取出list的最后一个值?从Java中的ArrayList获取第一个和最后一个元素?

    ArrayList类的get()方法接受表示索引值的整数,并在指定索引处返回当前ArrayList对象的元素. 因此,如果将0传递给此方法,则可以获取当前ArrayList的第一个元素: 如果传递li ...

  9. java中random方法取值范围_java中最值的求法,你可能忽略了这种方法了!

    对一批数据进行排序,然后找出其中的最大值或最小值,这是基本的数据结构知识.在Java中我们可以通过编写算法的方式,也可以通过数组先排序再取值的方式来实现.下面以求最大值为例,解释一下多种算法. 自行实 ...

最新文章

  1. 【最小割】HDU 3987 Harry Potter and the Forbidden Forest
  2. 人人都是 DBA(III)SQL Server 调度器
  3. 一个程序员的职业规划
  4. Linux内核的时钟中断
  5. 2进制、8进制、10进制、16进制...各种进制间的轻松转换(c#)
  6. 苹果正研发类似亚马逊Echo设备 Sir更加智能化
  7. Intellij IDEA 14 安装之后
  8. Qt-Qt Creator的下载、安装与配置(Windows)
  9. 千亿级数量下日志分析系统的技术架构选型
  10. C++字符串与C字符串的相互转换问题
  11. 益阳计算机应用专业推荐一下,益阳职业技术学院10大好专业推荐
  12. c4d python技巧_还在Bug不断?不妨试试Python中的这2个装__技巧
  13. SQL Server数据库连接工具SSMS18.2的安装与配置
  14. Java设计模式之Adapter模式
  15. 四、Oracle 视图
  16. c语言台阶,关于C语言跳台阶问题的解决方法
  17. 开通微信小店显示:系统繁忙,请稍后再试怎么回事?如何解决?
  18. 中信建投计算机行业周报
  19. 推荐 8 个高质量的公众号
  20. python绘制半对数坐标

热门文章

  1. java 内存分析之jmap 详细用法完整版(一)
  2. Centos7安装Python3并更改默认版本为python3(编译安装)
  3. scala中_下划线的使用
  4. Docker将镜像上传至私有仓库
  5. Pyhon Django 表单类ModelForm注册案例(可直接操作数据库)
  6. 两个数据集,本地可以关联,正式库关联不了
  7. vooc是什么快充协议_5G时代除了网速,快充同样重要!
  8. spring核心功能包中已经包含了cglib功能
  9. QML和C ++之间的数据类型转换---枚举
  10. 硬件工程师面试经历2015---笔试篇