首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组中提取字符并随机放置以创建字符串

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

Stack Overflow用户
提问于 2011-08-17 18:39:00
回答 5查看 6.8K关注 0票数 0

我得到了一个字符数组(大小为12),如下所示:

代码语言:javascript
复制
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'}  

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

代码语言:javascript
复制
“ahbejclfkdig”

我尝试了StringBuffer和随机放置的解决方案,但存在位置重复的问题。另外,我也试过Collections.shuffle,但我不太理解这个。我也研究了线性反馈移位寄存器,但我认为这里并不合适。这是非常简单的情况,我不会在大数字上操作,所以内存分配和速度应该不会引起任何重大问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-17 18:43:53

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

代码语言:javascript
复制
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);
    }
}

打印

代码语言:javascript
复制
kbljdhieagcf
gefabkhdclij
hbkfjilcgade
eacihdkjfgbl
hbjcfegdilka
票数 3
EN

Stack Overflow用户

发布于 2011-08-17 18:57:13

下面的代码使用了Collections.shuffle:

代码语言:javascript
复制
import java.util.Arrays;
import java.util.Collections;
import java.util.List;


public class Shuffle {

  public static void main(String[] args) {
    Character[] letters = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'};
    List<Character> shuffled = Arrays.asList(letters);
    Collections.shuffle(shuffled);
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < shuffled.size(); i++) {
      sb.append(shuffled.get(i));
    }
    System.out.println(sb);     
  }

}
票数 1
EN

Stack Overflow用户

发布于 2011-08-17 18:43:41

您可以在Java API中查找Random类。这将使您能够创建随机数组索引。因此,您可以按随机顺序从数组中选取字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7091436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档