java - 从哈希表中选择一个随机元素

标签 java

如何在 java 中生成哈希表中存在的随机 char

例如,从下表中,我想随机选择 XOI 并将该值放入 randomChar.

char randomChar = 'O';

Hashtable ht = new Hashtable();
ht.put(1, 'X');
ht.put(10, 'O');
ht.put(12, 'I');

最佳答案

如果没有特殊原因您使用HashTable来执行此操作,那么我建议您只使用数组。要获得随机字符,您只需生成一个从 0array.length - 1 的随机数:

char[] chars = { 'X', 'O', 'I' };
char randomChar = chars[new Random().nextInt(chars.length)];

但是,如果您确实想使用 HashTable,则应该使用 HashMap,并且也不应该使用原始类型:

Map<Integer, Character> hashMap = new HashMap<>();
hashMap.put(1, 'X');
hashMap.put(10, 'O');
hashMap.put(12, 'I');

获取随机Character的第一步是从HashMap中获取所有Character:

Collection<Character> characters = hashMap.values();

但是,Collection 类不允许我们使用索引访问集合,因此我们需要从中构造一个List:

List<Character> characterList = new ArrayList<>(characters);

现在要从此列表中获取随机字符,您可以生成一个随机数用作索引。为此,您可以使用 Random 类:

Random random = new Random();
int randomIndex = random.nextInt(hashMap.size());

最后,您可以使用以下索引从 List 中获取随机 Character:

Character randomChar = characterList.get(randomIndex);

要在一行中完成所有这些操作,您可以执行以下操作:

Character randomChar = new ArrayList<>(hashMap.values()).get(new Random().nextInt(hashMap.size()));

关于java - 从哈希表中选择一个随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38248381/

相关文章:

java - 如何为员工设计 Java Contract 类

Java:更改预填充的字符串数组列表中的元素

java - TypeFace.createFromAsset 找不到字体错误

java - BufferedReader 在 readLine 中没有阻塞

java - 从 JFrame 获取字符串值到 Java 类

Java - 关键捕手

java - 如何在 Eclipse RCP 插件中访问 logback.xml?

java - 开始使用jogl,找不到DebugGL类

java - IIS中的网站与tomcat连接

java - 使用 SBT 构建纯 Java 项目