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

 我来答
百度网友699fe95
2016-06-22
知道答主
回答量:7
采纳率:0%
帮助的人:8万
展开全部

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<String, String> tmp = new HashMap<String, String>();

for(int i=0; i<strRange.length(); i++){

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

}

StringBuffer result=new StringBuffer();

for(int i=0; i<len; 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();

}

}

粤西小二
2013-01-21 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:66.9万
展开全部
public String createPassword(int length) {
String str = "0123456789abcdefghijklmnopqrstuvwxyz";
StringBuilder builder = new StringBuilder();
for (int i = 0; i < length; i++) {
builder.append(str.charAt((int) (Math.random() * 36)));
}
return builder.toString().toUpperCase();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式