我有一个char数组(大小为12),看起来像这样:
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'}
我想创建(以最有效的方式)一个字符串,该字符串将是从数组中获取字符并将它们随机排序的结果(例如,使用该词),例如:
“ahbejclfkdig”
我尝试过使用StringBuffer和随机放置的解决方案,但是存在位置重复的问题。另外,我尝试了Collections.shuffle,但是我还不太明白这一点。我也看了线性反馈移位寄存器,但我认为这里不合适。这是非常简单的情况,我不会大量使用,因此内存分配和速度不应引起任何重大问题。
您可以使用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