散华礼之弥
2016-10-20 13:00:44浏览 2109
package 随机String排序;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class RandomStringSort {
//随机数生成的最大最小范围
private static final int MAX = 122;
private static final int MIN = 48;
//带泛型String的List
private static List<String> stringList = new ArrayList<>();
public static void main(String[] args) {
//初始化数据
initData();
//排序前显示
System.out.println("----------排序前----------");
showData();
//排序后显示
Collections.sort(stringList);
System.out.println("----------排序后----------");
showData();
}
/**
* 向List中添加数据
*/
private static void initData() {
for (int i = 0; i < 10; i++) {
stringList.add(buildRandomString());
}
}
/**
* List中内容的显示
*/
private static void showData() {
for (String string : stringList) {
System.out.println(string);
}
}
/**
* 生成随机字符串
* @return String
*/
private static String buildRandomString() {
/*
* a = 97
* z = 122
* A = 65
* Z = 90
* 0 = 48
* 9 = 57
* 首先生成48-122的随机数
* 然后进行区间判断
* 最后转化为char再拼接成String
*/
StringBuilder stringBuilder = new StringBuilder();
Random random = new Random();
// 随机字符串的长度
int length;
// 生成的随机数
int r;
do {
length = random.nextInt(11);
for (int i = 0; i < length; i++) {
// 判断生成的随机数r是否是大小写字母或数字
// 如果不是则重新生成r
r = random.nextInt(MAX)%(MAX - MIN + 1) +MIN;
while(!((r >= 48 && r <= 57)||(r >= 65 && r <= 90)||(r >= 97 && r <= 122))) {
r = random.nextInt(MAX)%(MAX - MIN + 1) +MIN;
}
stringBuilder.append((char)r);
}
// 这里并没有判断stringList中是否已经存在要插入的字符串
// 因为每次的字符串都是随机长度和内容的
// 存在重复的概率是极小的,所以忽略掉了
} while (length == 0);
return stringBuilder.toString();
}
}