小编典典

从数组中取出字符并随机放​​置以创建字符串

algorithm

我有一个char数组(大小为12),看起来像这样:

{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'}

我想创建(以最有效的方式)一个字符串,该字符串将是从数组中获取字符并将它们随机排序的结果(例如,使用该词),例如:

“ahbejclfkdig”

我尝试过使用StringBuffer和随机放置的解决方案,但是存在位置重复的问题。另外,我尝试了Collections.shuffle,但是我还不太明白这一点。我也看了线性反馈移位寄存器,但我认为这里不合适。这是非常简单的情况,我不会大量使用,因此内存分配和速度不应引起任何重大问题。


阅读 298

收藏
2020-07-28

共1个答案

小编典典

您可以使用shuffle,但可以将其更改为StringBuilder。除非您必须使用Java的旧版本,否则我不会使用StringBuffer。

public static void main(String... args) {
    StringBuilder sb = new StringBuilder("abcdefghijkl");
    for (int i = 0; i < 5; i++) {
        shuffle(sb);
        System.out.println(sb);
    }
}


public static void shuffle(StringBuilder sb) {
    Random rand = new Random();
    for (int i = sb.length() - 1; i > 1; i--) {
        int swapWith = rand.nextInt(i);
        char tmp = sb.charAt(swapWith);
        sb.setCharAt(swapWith, sb.charAt(i));
        sb.setCharAt(i, tmp);
    }
}

版画

kbljdhieagcf
gefabkhdclij
hbkfjilcgade
eacihdkjfgbl
hbjcfegdilka
2020-07-28