Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何生成随机字符串并将其放入哈希表?_Java_Random_Hashtable - Fatal编程技术网

Java 如何生成随机字符串并将其放入哈希表?

Java 如何生成随机字符串并将其放入哈希表?,java,random,hashtable,Java,Random,Hashtable,我想生成一个随机的唯一字符串并放入哈希表中。我确实喜欢下面的代码,但它不是唯一的,它只是一个字符 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 = n

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

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=dea}{9=egt}{11=brf}{10=dgrtg}{43=grrh}{14=gwrt}.....

尝试使用下面的代码,使用随机方法生成唯一的密钥

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;
    } 
private char[]uniqueKeyGenerator(int len){
字符串大写字母_chars=“ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
字符串小字符=“abcdefghijklmnopqrstuvwxyz”;
字符串编号=“0123456789”;
字符串值=大写字母+小写字母+数字;
//使用随机方法
随机rndm_方法=新随机();
char[]password=新字符[len];
对于(int i=0;i
您可以使用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);
如果您只需要字母表,请使用
RandomStringUtils.randomstringalphalcic(10)随机字符串的安装。随机字母数字(10)

如果您不想要第三方api,那么它就是您的代码片段,并进行了一些更改

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++;
    }
while(k<4){

对于(int j=1;j,您可以使用下面的代码生成随机字符串

private static final String ALPHA_STRING = "abcdefghijklmnopqrstuvwxyz";

public static String randomString(int count) {
    StringBuilder builder = new StringBuilder();
    while (count-- != 0) {
        int character = (int) (Math.random() * ALPHA_STRING.length());
        builder.append(ALPHA_STRING.charAt(character));
    }
    return builder.toString();
}

public static void main(String[] arg) {
    Hashtable<Integer, String> Deck = new Hashtable();
    for (int j = 1; j <= 10; j++) {
            Deck.put(j, randomString(12));
    }
    System.out.println(Deck);


}
也许,
sb.append(str.charAt(myChar));
您只添加了一个。您可以增加它的长度
myChar+支持的任何int。
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 static final String ALPHA_STRING = "abcdefghijklmnopqrstuvwxyz";

public static String randomString(int count) {
    StringBuilder builder = new StringBuilder();
    while (count-- != 0) {
        int character = (int) (Math.random() * ALPHA_STRING.length());
        builder.append(ALPHA_STRING.charAt(character));
    }
    return builder.toString();
}

public static void main(String[] arg) {
    Hashtable<Integer, String> Deck = new Hashtable();
    for (int j = 1; j <= 10; j++) {
            Deck.put(j, randomString(12));
    }
    System.out.println(Deck);


}
{10=upjolkfihcyh, 9=irpbrcoclcmx, 8=ppugclscjlja, 7=wtnvkpmocuwd, 6=gpyzppvywazp, 5=vosixtjvcqlg, 4=plwtzzjpzeoq, 3=wsdyyppphhng, 2=knqdzfctfnez, 1=jzakqfiksrho}