常規(guī)思路生成隨機(jī)的字符串
生成隨機(jī)字符串的思路:
1.生成字符串的隨機(jī)長(zhǎng)度
2.構(gòu)造一個(gè)裝有a-z,A-Z.0-9的基礎(chǔ)字符數(shù)組
3.從基礎(chǔ)字符數(shù)組中隨機(jī)取出一個(gè)字符,放入StringBuffer類的一個(gè)內(nèi)容可變的String對(duì)象中
package?com.imooc.collection; import?java.util.ArrayList; import?java.util.Collections; import?java.util.List; import?java.util.Random; public?class?CollectionsTest?{ public?static?final?int?STRINGLENGTH?=?10; /** ?*?生成內(nèi)容隨機(jī)且長(zhǎng)度為(1-10)以內(nèi)的隨機(jī)的字符串 ?*/ public?static?String?getRandomString(){ Random?random?=?new?Random(); //?生成1-10以內(nèi)的隨機(jī)數(shù) int?stringlength?=?random.nextInt(STRINGLENGTH)+1; //?生成stringlength長(zhǎng)度的隨機(jī)字符串 //?基本字符串 String?BaseString?=?"qwertyuiopasdfghjklzxcvbnm1234567890" +?"QWERTYUIOPASDFGHJKLZXCVBNM";? //?構(gòu)造長(zhǎng)度內(nèi)容可變的字符串對(duì)象sb,用來(lái)承裝取出的隨機(jī)字符 StringBuffer?sb?=?new?StringBuffer(); for(int?i?=?0;?i?<?stringlength;?i++){ //?從基本字符組中隨機(jī)抽出一個(gè)字符的所在位置 int?num?=?random.nextInt(BaseString.length()); //?將BaseString中特定位置上的字符取出放入字符串sb中 sb.append(BaseString.charAt(num)); } //?將StringBuffer類型的sb轉(zhuǎn)換成String類型返回 return?sb.toString(); } public?void?testSort3(){ //?創(chuàng)建一個(gè)泛型為String類的字符串列表 List<String>?stringlist?=?new?ArrayList<String>(); //?向該列表中添加字符串 for(int?i?=?0;?i?<?10;?i++){ stringlist.add(getRandomString()); } System.out.println("--------------排序前--------------"); for(String?str?:?stringlist){ System.out.println("字符串:?"?+?str); } System.out.println("--------------排序后--------------"); Collections.sort(stringlist); for(String?str?:?stringlist){ System.out.println("字符串:?"?+?str); } } public?static?void?main(String[]?args)?{ CollectionsTest?ct?=?new?CollectionsTest(); ct.testSort3(); }
????我的生成隨機(jī)字符串的思路很簡(jiǎn)單,也很常規(guī)。在問(wèn)答里有很多童鞋的思路算法非常有創(chuàng)造性,在這里要向他們學(xué)習(xí)。
2016-01-15
我的思路和你差不多,不過(guò)我是通過(guò)ASII碼表來(lái)構(gòu)造字符串的,通過(guò)隨機(jī)數(shù)字對(duì)應(yīng)的char類型來(lái)獲取字符,用一個(gè)新的String類對(duì)象來(lái)接收char的內(nèi)容,再完成String的拼貼,從而得到隨機(jī)長(zhǎng)度的隨機(jī)字符條