自己參考著寫的《隨機生成不重復字符串》代碼
public?static?void??testSort3(){ ???List<String>?list3?=?new?ArrayList<String>();//儲存所有字符串 ???Set<String>??setString?=?new?HashSet<String>();//用于選擇不同的字符串 ???String?newst?=?new?String();???????????????????//儲存當前得到的字符串 ??? ???Random??rand?=?new?Random();???????//產生10以內隨機數。用于字符串控制長度 ???StringBuffer?sb=?new?StringBuffer();???//?可以變動的字符型 ???StringBuffer??buf?=?new?StringBuffer("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");???????????//?字符組合的基 ??? ?????int?m?=?0;??????????????//m控制字符串的數量 ?????while?(m<10){ ????do{ ?//字符串長度在10以內。達到該長度前進行for循環 ????for(int?i?=?0;?i?<?rand.nextInt(10);?i?++){ ????????//定義一個變量,取得buf字符組合基的長度 ?int?num?=?buf.length(); //往空的字符串?sb?的末端加入單個元素。該元素從buf組合基中隨機取得 ???????sb.append(buf.charAt(rand.nextInt(num))); ???????????????????????}//do結束 //將sb可變動類型轉換成字符串型 ??????????????????????? ???????????newst=?sb.toString(); ???????????//若setString中已包含該對象,重新進行do操作 ?}while?(setString.contains(newst)); ?//往Set接口下的setString中添加該對象 ????setString.add(newst); ???//往List接口下的list3中添加該字符串? ??list3.add(newst); ?? ?System.out.println("成功添加:"+newst); ? ?//可變更類型的??sb?字符串?清空,用于下一次操作 ?sb=?new?StringBuffer(); ?m++; ?} ?System.out.println("============排序前=========="); for?(String?in?:?list3){ System.out.println("元素:"+?in); } System.out.println("----------------------排序后---------------------"); Collections.sort(list3); ???????????????????????for?(String?in?:?list3){ System.out.println("元素:"+?in); } ? }
自己寫的代碼。如有不足請指教一二。十分感謝!
2015-12-29