【发布时间】:2019-05-09 11:41:13
【问题描述】:
我在一个类中有一个构造函数,我在其中初始化一个哈希表,由一个整数和一个字符串列表组成。我用从 0 到任何需要的数字填充键,它们对应的值是我事先在构造函数中创建的向量。我需要的是随机重新排列它们(只是以任何可能的方式随机排列它们),这样当我使用 getQuest() 时,我会得到一个随机键值对,它恰好位于哈希表的最后一个位置并将其删除同时。
public class Quest {
private Hashtable<Integer, List<String>> quests;
public Quest()
{
this.quests = new Hashtable<>();
List<String> mushrooms = new Vector<>();
mushrooms.add("Choose a mushroom, but be careful not to be poisoned");
mushrooms.add("mushroom1");
mushrooms.add("mushroom2");
mushrooms.add("mushroom3");
List<String> weapons = new Vector<>();
weapons.add("Choose a weapon that will help you survive");
weapons.add("knife");
weapons.add("rifle");
weapons.add("sword");
this.quests.put(0, mushrooms);
this.quests.put(1, weapons);
}
public List<String> getQuest()
{
return quests.remove(quests.size());
}
}
另外,如果这不是一个好主意,最好使用 rand 或类似的东西并从哈希表中的某处获取随机对以返回(当然也要删除它)。
【问题讨论】:
-
旁注:
Hashtable和Vector自 Java 1.3 以来已过时。考虑改用HashMap和ArrayList。
标签: java class dictionary hashtable shuffle