gpt4 book ai didi

java - 如何在java中对Hashtable进行洗牌

转载 作者:行者123 更新时间:2023-12-02 01:45:54 26 4
gpt4 key购买 nike

我在一个类中有一个构造函数,在其中初始化一个哈希表,其中包含一个整数和一个字符串列表。我用从 0 到任何需要的数字填充键,它们对应的值是我事先在构造函数中创建的 vector 。我需要的是随机地重新排列它们(只是以任何可能的方式对它们进行洗牌),这样当我使用 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 或类似的东西,并从哈希表中的某个位置获取一个随机对来返回(当然,同时也删除它)。

最佳答案

你不会“洗牌” HashtableMap - 元素未排序。

也就是说,iterator通常每次都会返回相同的顺序,因此为了更改它,请将 key 放入 ArrayList并使用Collections.shuffle关于这一点。迭代该打乱的列表并通过其键访问表/映射中的元素。

关于java - 如何在java中对Hashtable进行洗牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53674052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com