在 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);