我有一个 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
关于java - 从数组中取出字符并将它们随机放置以创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7091436/