利用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 }

 

posted @ 2017-04-30 21:09  守明  阅读(8376)  评论(0编辑  收藏  举报