java中,我想随机获取不重复的字符串?应该怎么办?

2025-04-30 03:39:25
推荐回答(1个)
回答1:

1.先确定字符串的长度;

2.再确定字符串包括哪些字符;//这样可以确定字符的ASCII范围

3.然后就有很多方法去随机获取字符:

          把字符存放在一个Map中的value中,如:map.put(1,"字符1");map.put(2,"字符2");

          map.put(3,"字符3");一次类推,通过Math.random()*字符的个数,取整就可以得到key值,

          map.get(key),value不为null,然后在map中删除这个key-value,可以设置map.put(key,null);

          循环到字符串的长度为需要的长度。

具体一种方法的代码:

import java.util.HashMap;

import java.util.Map;

public class RandomStr {


public static void main(String[] args) {

for(int i=0; i< 10; i++){//测试10次产生随机不重复字符串

generateRandomStr(5);

}

}

/**

* 产生不重复的随机字符串

* @param len 生成字符串的长度

* @return

*/

public static String generateRandomStr(int len){

String strRange = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";//字符串范围,根据自己的需求确定

Map tmp = new HashMap();

for(int i=0; i

tmp.put(i+"",strRange.charAt(i)+"");

}

StringBuffer result=new StringBuffer();

for(int i=0; i

String key = (int)(Math.random()*(strRange.length()-i))+"";

result.append(tmp.get(key));

tmp.remove(key);

tmp.put(key, tmp.get((strRange.length()-i-1)+""));//拿最后一个字符填充删除的位置key-value

}

System.out.println(result);

return result.toString();

}

}