存储13个随机值而不重复java中的字符串数组

时间:2015-04-27 12:23:26

标签: java android random unique shuffle

我希望将13个值分配给字符串而不重复。我也使用了随机函数和shuffle,但是它给了我一个来自这个String数组的值

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

4 个答案:

答案 0 :(得分:1)

尝试更改:

for (String ss : orgCards) {
    listString = ss; //HERE
}

要:

for (String ss : orgCards) {
    listString += ss + " ";  
}

答案 1 :(得分:0)

您可以使用StringBuilder代替:

StringBuilder sb = new StringBuilder();

for (String ss : orgCards) {
    sb.append(ss);
}

使用sb.toString()作为输出。

答案 2 :(得分:0)

使用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());  
        }  
    }  
}

输出:

  

阿贾伊
  维杰
  拉维

答案 3 :(得分:0)

这将从数组中随机打印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);