利用Java实现随机字符串
今天碰到一个有趣的题目:利用Collections的sort方法对泛型为String的集合进行排序,并输出结果。要求:1. 创建完List<String>后,往其中插入10条随机字符串;2. 每条字符串为10以内的随机整数;3. 每条字符串的每个字符都是随机生成,字符可重复,字符由数字及大小写字母构成;4. 每条随机字符串不可重复;看完之后起了兴趣,就花时间做了一下,与大家共享。
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 import java.util.Random; 5 6 public class Test430 { 7 public List<String> testRandomString(int order){ 8 // 创建List<String> 9 List<String> ls = new ArrayList<String>(); 10 String ku = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 11 /* 定义一个StringBuilder用以保存生成的字符串,这里不选用String和StringBuffer(String长度 12 不可变,StringBuffer没有StringBuilder快)*/ 13 StringBuilder newStr = new StringBuilder(); 14 // 创建一个Random用以生成伪随机数,也可采用Math.random()来实现 15 Random r = new Random(); 16 for(int j = 0;j<order;j++){ 17 do{ 18 // 将newStr置空 19 newStr.delete(0,newStr.length()); 20 // 得到字符串长度的随机数 21 int r1 = r.nextInt(10)+1; 22 for(int i = 0;i<r1;i++){ 23 // 得到随机字符 24 int r2 = r.nextInt(ku.length()); 25 newStr.append(ku.charAt(r2)); 26 } 27 }while(ls.contains(newStr.toString())); 28 ls.add(newStr.toString()); 29 } 30 return ls; 31 } 32 public static void main(String[] args){ 33 Test430 t = new Test430(); 34 List<String> tattedCode = t.testRandomString(3); 35 System.out.println("===排序前==="); 36 for(String s:tattedCode){ 37 System.out.println(s); 38 } 39 Collections.sort(tattedCode); 40 System.out.println("===排序后==="); 41 for (String sec:tattedCode){ 42 System.out.println(sec); 43 } 44 } 45 }