在 java 中的字符串数组中存储 13 个不重复的随机值
storing 13 random values without duplicates from a string array in java
我想将 13 个值不重复地分配给一个字符串。我也使用了随机函数和随机播放,但它从这个字符串数组中给了我 1 个值
String[] orgCards = {
"ca", "ck", "cq", "cj", "c10", "c9", "c8", "c7", "c6", "c5", "c4", "c3", "c2",
"sa", "sk", "sq", "sj", "s10", "s9", "s8", "s7", "s6", "s5", "s4", "s3", "s2",
"da", "dk", "dq", "dj", "d10", "d9", "d8", "d7", "d6", "d5", "d4", "d3", "d2",
"ha", "hk", "hq", "hj", "h10", "h9", "h8", "h7", "h6", "h5", "h4", "h3", "h2"
};
TextView text = (TextView) findViewById(R.id.textField);
String listString = "";
for (String i : orgCards) {
list.add(i);
}
for (int j = 1; j <= 52; j++) {
Collections.shuffle(list);
for (int i = 0; i < list.size(); i++) {
orgCards[i] = list.get(i);
}
for (String ss : orgCards) {
listString = ss;
}
}
text.setText("my string"+" " + listString);
output is :
ca
尝试更改:
for (String ss : orgCards) {
listString = ss; //HERE
}
收件人:
for (String ss : orgCards) {
listString += ss + " ";
}
您可以改用 StringBuilder
:
StringBuilder sb = new StringBuilder();
for (String ss : orgCards) {
sb.append(ss);
}
使用 sb.toString()
作为输出。
使用HashSet
解决这个问题。
示例:
class Test {
public static void main(String args[]) {
HashSet<String> al = new HashSet<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
Iterator<String> itr = al.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
输出:
Ajay
Vijay
Ravi
这将从数组中随机打印 13 个字符串
String[] orgCards = {
"ca", "ck", "cq", "cj", "c10", "c9", "c8", "c7", "c6", "c5", "c4", "c3", "c2",
"sa", "sk", "sq", "sj", "s10", "s9", "s8", "s7", "s6", "s5", "s4", "s3", "s2",
"da", "dk", "dq", "dj", "d10", "d9", "d8", "d7", "d6", "d5", "d4", "d3", "d2",
"ha", "hk", "hq", "hj", "h10", "h9", "h8", "h7", "h6", "h5", "h4", "h3", "h2"
};
List<String> list = new ArrayList<String>(orgCards.length);
for (String i : orgCards) {
list.add(i);
}
Collections.shuffle(list);
String listString = "";
for (int i=0; i<13; i++) {
listString += " " + list.get(i);
}
TextView text = (TextView) findViewById(R.id.textField);
text.setText("my string:" + listString);
我想将 13 个值不重复地分配给一个字符串。我也使用了随机函数和随机播放,但它从这个字符串数组中给了我 1 个值
String[] orgCards = {
"ca", "ck", "cq", "cj", "c10", "c9", "c8", "c7", "c6", "c5", "c4", "c3", "c2",
"sa", "sk", "sq", "sj", "s10", "s9", "s8", "s7", "s6", "s5", "s4", "s3", "s2",
"da", "dk", "dq", "dj", "d10", "d9", "d8", "d7", "d6", "d5", "d4", "d3", "d2",
"ha", "hk", "hq", "hj", "h10", "h9", "h8", "h7", "h6", "h5", "h4", "h3", "h2"
};
TextView text = (TextView) findViewById(R.id.textField);
String listString = "";
for (String i : orgCards) {
list.add(i);
}
for (int j = 1; j <= 52; j++) {
Collections.shuffle(list);
for (int i = 0; i < list.size(); i++) {
orgCards[i] = list.get(i);
}
for (String ss : orgCards) {
listString = ss;
}
}
text.setText("my string"+" " + listString);
output is : ca
尝试更改:
for (String ss : orgCards) {
listString = ss; //HERE
}
收件人:
for (String ss : orgCards) {
listString += ss + " ";
}
您可以改用 StringBuilder
:
StringBuilder sb = new StringBuilder();
for (String ss : orgCards) {
sb.append(ss);
}
使用 sb.toString()
作为输出。
使用HashSet
解决这个问题。
示例:
class Test {
public static void main(String args[]) {
HashSet<String> al = new HashSet<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
Iterator<String> itr = al.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
输出:
Ajay
Vijay
Ravi
这将从数组中随机打印 13 个字符串
String[] orgCards = {
"ca", "ck", "cq", "cj", "c10", "c9", "c8", "c7", "c6", "c5", "c4", "c3", "c2",
"sa", "sk", "sq", "sj", "s10", "s9", "s8", "s7", "s6", "s5", "s4", "s3", "s2",
"da", "dk", "dq", "dj", "d10", "d9", "d8", "d7", "d6", "d5", "d4", "d3", "d2",
"ha", "hk", "hq", "hj", "h10", "h9", "h8", "h7", "h6", "h5", "h4", "h3", "h2"
};
List<String> list = new ArrayList<String>(orgCards.length);
for (String i : orgCards) {
list.add(i);
}
Collections.shuffle(list);
String listString = "";
for (int i=0; i<13; i++) {
listString += " " + list.get(i);
}
TextView text = (TextView) findViewById(R.id.textField);
text.setText("my string:" + listString);