如何生成随机字符串并将其放在HashTable中?

问题描述 投票:-1回答:3

我想生成一个随机的唯一String并放入哈希表。我确实喜欢下面的代码,但它不是唯一的,它只是一个字符。

while(k<4){
    for(int j=1 ; j<=13 ;j++){
        Hashtable<Integer, String> Deck = new Hashtable();  
        int myChar = (int) (Math.random()*str.length());
        StringBuilder sb = new StringBuilder();
        sb.append(str.charAt(myChar)); 

        int i = (int) (Math.random() *52) ; 
        Deck.put(i, sb.toString());
        System.out.print(Deck);
    }

    System.out.println();
    k++;
}

输出就是这个

{30=d}{9=e}{11=b}{10=d}{43=g}....

我想成为

{30=dea}{9=egt}{11=brf}{10=dgrtg}{43=grrh}{14=gwrt}.....
java random hashtable
3个回答
0
投票

您可以使用Apache Commons Lang生成字母字符串

String generatedString = RandomStringUtils.randomAlphanumeric(10);

尝试这样的事情

    Hashtable<Integer, String> Deck = new Hashtable();

    for (int i = 0; i < 10; i++) {
        String generatedString = RandomStringUtils.randomAlphanumeric(10);
        int key = (int) (Math.random() *52) ;
        Deck.put(key, generatedString);
    }
    System.out.println(Deck);

产量

{9=Ut7N87oMNp, 8=7kbARh5WIy, 7=pbU2ZCOGK1, 6=vAGAIw41Us, 5=VLnpY1FAuN, 4=UEIJNIvZlt, 3=z6Y3zXcDY1, 2=PxaMqXl8XW, 1=l72bkPdY6T, 0=FFdOsKpQgd}

如果你只想要字母,那么使用qazxsw poi而不是qazxsw poi。

如果你不想要第三方api,那么你的代码片段会有一些变化

RandomStringUtils.randomAlphabetic(10);

仅添加while循环...


0
投票

尝试使用以下代码使用随机方法生成唯一键。

RandomStringUtils.randomAlphanumeric(10)

0
投票

您可以使用以下代码生成随机字符串。

while (k < 4) {
        for (int j = 1; j <= 13; j++) {
            Hashtable<Integer, String> Deck = new Hashtable();
            StringBuilder sb = new StringBuilder();
            int cnt = 0;
            while (cnt++ != 10) {
                int myChar = (int) (Math.random() * str.length());
                sb.append(str.charAt(myChar));
            }
            int i = (int) (Math.random() * 52);
            Deck.put(i, sb.toString());
            System.out.print(Deck);
        }

        System.out.println();
        k++;
    }

产量

private char[] uniqueKeyGenerator(int len) {

        String Capital_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String Small_chars = "abcdefghijklmnopqrstuvwxyz";
        String numbers = "0123456789";
        String values = Capital_chars + Small_chars + numbers;

        // Using random method
        Random rndm_method = new Random();
        char[] password = new char[len];
        for (int i = 0; i < len; i++) {
            password[i] = values.charAt(rndm_method.nextInt(values.length()));
        }
        return password;
    } 
© www.soinside.com 2019 - 2024. All rights reserved.