Java 从表中获取一个随机字符串,但不能超过一次

Java 从表中获取一个随机字符串,但不能超过一次,java,Java,我试图找出如何从一个表中获取随机字符串,包括10个单词。我正在制作游戏《刽子手》,但我不想一个字重复两次。游戏将持续到选出5个单词为止 有什么好的解决办法吗?这是我的表现在的随机方法 private String wordList[] = { "String1", "String2", ..... } public void getRandomWord(){ Random generator = new Random(); int r = generator.nextInt(9)

我试图找出如何从一个表中获取随机字符串,包括10个单词。我正在制作游戏《刽子手》,但我不想一个字重复两次。游戏将持续到选出5个单词为止

有什么好的解决办法吗?这是我的表现在的随机方法

private String wordList[] = { "String1", "String2", ..... }
public void getRandomWord(){
    Random generator = new Random();
    int r = generator.nextInt(9);
    activeWord = wordList[r];
}
我试着让它工作,但没有成功:

ArrayList<String> usedWords= new ArrayList<String>();
public void getRandomWord(){
    Random generator = new Random();
    int r = generator.nextInt(9);
    if(addWord(wordList[r])){
        activeWord= wordList[r];
    }
}

private boolean addWord(String word) {
    for(String v : usedWords){
        if(!v.equals(word)){
            usedWords.add(word);
            return true;
        }
        else{
            getRandomWord();
        }
    }
    return false;   
}
ArrayList usedWords=new ArrayList();
public void getRandomWord(){
随机生成器=新随机();
int r=发电机下一个(9);
if(addWord(单词列表[r])){
activeWord=wordList[r];
}
}
专用布尔添加字(字符串字){
for(字符串v:usedWords){
如果(!v.equals(word)){
添加(单词);
返回true;
}
否则{
getRandomWord();
}
}
返回false;
}
我想我已经进行了一次迭代,但我猜这不是必然的

我一直在考虑使用布尔值的字符串表。因此,如果这个词的价值是真的,我会抓住它,如果不是,我会一直走,直到找到一个词


我可能会使用while循环来实现这一点?

如果将单词列表设置为ArrayList,则每次使用它时都可以从列表中删除该单词。这样一来,可能值的列表就会缩小,而且不会有两次选择单词的风险。

预先将其洗牌,然后只需按顺序选择即可。没有查找,没有布尔,没有碰撞。看看像Fisher-Yates这样的算法,我喜欢这个想法。这是一个android应用程序。如果我将这些单词添加到字符串值中,这仍然可行吗?是的,我相信ArrayList存在于android平台上。非常感谢。这确实有帮助:)