如何在 java 中生成哈希表中存在的随机 char
?
例如,从下表中,我想随机选择 X
、O
或 I
并将该值放入 randomChar
.
char randomChar = 'O';
Hashtable ht = new Hashtable();
ht.put(1, 'X');
ht.put(10, 'O');
ht.put(12, 'I');
最佳答案
如果没有特殊原因您使用HashTable
来执行此操作,那么我建议您只使用数组。要获得随机字符,您只需生成一个从 0
到 array.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/