如何在java中生成随机字符,但生成的随机字符在哈希表中。 我想随机选择X,O或I,并将该值放在randomChar中。
char randomChar='O';
Hashtable ht = new Hashtable();
ht.put(1, 'X');
ht.put(10, 'O');
ht.put(12, 'I');
抱歉英语不好,
答案 0 :(得分:1)
如果您没有使用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
的第一步是获取Character
中的所有HashMap
:
Collection<Character> characters = hashMap.values();
Collection
类不允许我们使用索引访问集合,因此我们需要从中构造List
:
List<Character> characterList = new ArrayList<>(characters);
现在要从此List
获取一个随机字符,您可以生成一个随机数作为索引。为此,您可以使用Random
类:
Random random = new Random();
int randomIndex = random.nextInt(hashMap.size());
最后,您使用此索引从Character
获取随机List
:
Character randomChar = characterList.get(randomIndex);
要在一行中完成所有这些操作,您可以这样做:
Character randomChar = new ArrayList<>(hashMap.values()).get(new Random().nextInt(hashMap.size()));
答案 1 :(得分:0)
假设Hashtable
使用keySet()
提取密钥集,并将其作为带toArray
的数组。然后取0
- size()-1
范围内的随机数,从数组中选择相应的元素,并提取表中关联的值。
或者提取值并使用等效程序随机选择一个。