如何正确使用Collection.shuffle?

时间:2015-04-14 07:28:27

标签: java collections shuffle

List<Character> word_to_show = new ArrayList<Character>();
for(char ch:jumbled_word.toCharArray()){
word_to_show.add(ch);
}
Collections.shuffle(word_to_show);

这就是我用来随机播放一个单词然后println()将在控制台中显示它。但很多时候它正在发生,比如说这个词是DO,在洗牌之后我再次得到DO而不是OD(我想得到)。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如果单词是DO,则有50%的可能性来检索DO,50%可以检索OD。

您的代码是正确的。

答案 1 :(得分:0)

您需要在一个循环中进行随机播放,该循环具有确保结果与原始字符串不同的条件。

假设String jumbledWord是您的原始字符串:

String originalWord = jumbledWord;
while(originalWord.equals(jumbledWord)){
    List<Character> wordToShow = new ArrayList<Character>();
    for(char ch:jumbledWord.toCharArray()){
        wordToShow.add(ch);
    }
    Collections.shuffle(wordToShow);
    jumbledWord = new String(wordToShow.toArray());
}

在此之后,jumbledWord将包含您的加扰字符串,现在保证与原始字符串不同。