【问题标题】:How To Shuffle String Arrays [duplicate]如何洗牌字符串数组
【发布时间】:2016-06-19 03:26:31
【问题描述】:

如何在数组下方随机播放

String[] firstName =["a","b","c","d","e"];
String[] lastName =["p","q","r","s","t"];
String[] salary =["10","20","30","40",50"];
String[] phoneNo= ["1","2","3","4","5"];

洗牌后我需要像这样的结果

String[] firstName =["d","b","e","c","a"];
String[] lastName =["s","q","t","r","p"];
String[] salary =["40","20","50","30",10"];
String[] phoneNo= ["4","2","5","3","1"];

表示例如,如果 "a" 的索引从 firstName 更改为 4,则 "p""10""1" 的相应索引将从 0 更改为 4..

【问题讨论】:

标签: java arrays string random shuffle


【解决方案1】:

如果你的任务不是实现 snuffle 算法,你可以使用标准的java.util.Collections#shuffle 方法:

String[] firstName = new String[] {"a","b","c","d","e"};
List<String> strList = Arrays.asList(firstName);
Collections.shuffle(strList);
firstName = strList.toArray(new String[strList.size()]);

【讨论】:

  • 感谢您的回答,但我已经找到了解决方案
【解决方案2】:

只需创建一个包含值的数组(或列表)

Integer[] arr = new Integer[firstName.length];
for (int i = 0; i < arr.length; i++) {
    arr[i] = i;
}

Collections.shuffle(Arrays.asList(arr));

然后只需创建一个新的字符串数组将值移动到

string[] newFirstName = new string[arr.length]();
for(int i=0; i < arr.length; i++)
{
    newFirstName[i] = firstName[arr[i]];
    //etc ....
}

【讨论】:

  • 如果我的数组是 X 长度怎么办......??
  • 您上面使用的所有示例都使用相同的排序顺序。所以我假设你有一个固定的顺序和长度。洗牌需要随机吗?
  • 这就是我需要的未知 X 长度数组
  • 如果您需要随机化列表然后从其他人那里查看上面的 cmets
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
相关资源
最近更新 更多