今天碰到一個有趣的題目:利用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 }
