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