这篇文章主要介绍了java 生成随机字符串数组的实例详解的相关资料,主要是利用collections.sort()方法对泛型为string的list 进行排序,需要的朋友可以参考下
java 生成随机字符串数组的实例详解
利用collections.sort()方法对泛型为string的list 进行排序。具体要求:
1.创建完listf7e83be87db5cd2d9a8a0b8117b38cd4之后,往其中添加十条随机字符串
2.每条字符串的长度为10以内的随机整数
3.每条字符串的每个字符都为随机生成的字符,字符可以重叠
4.每条随机字符串不可重复
将涉及到的知识有: string、stringbuffer、listarray、泛型、collections.sort、foreach、random等相关知识,算是 在java 学习过程中一个比较好的的实践。
1. 随机生成一个字符
1.1 先将所有的字母和0-9的数字存放于一个字符串中,以便后续使用。
string str = "aabbccddeeffgghhiijjkkllmmnnooppqqrrsstt
uuvvwwxxyyzz0123456789";
1.2 因为要满足随机性,所以创建一个 random 对象,利用其中的 nextint(str.length) 方法生成一个 0 — str.length 的随机数。
random random = new random();
int index = random.nextint(str.length());
1.3 再将上述生成的随机数作为 str 字符串的索引取出相应的字符,及随机生成了一个字符
char c = str.charat(index);
2. 生成一条长度为10以内的随机字符串
2.1 因为是10以内且满足随机性,所以此处使用 math.random() 函数,其返回值为随机 0.0 - 1.0 的 double 类型的数
stringbuffer stringbuffer = new stringbuffer();
//确定字符串长度
int stringlength = (int) (math.random()*10);
2.2 现在字符串的长度可以确认,也实现了生成随机的字符,再利用 for 循环就可以生成一条长度为10以内的随机字符串
for (int j = 0; j < stringlength; j++) {
int index = random.nextint(str.length());
char c = str.charat(index);
stringbuffer.append(c);
}
//将stringbuffer转换为string类型的字符串
string string = stringbuffer.tostring();
3. 生成10条随机字符串
3.1 经过上述的两个步骤,再在外部嵌套一个 for 循环就可以生成 10 条随机字符串
4. 创建一个 listarray<string> 集合储存着10条随机字符串
4.1 创建一个 string 类型集合,该步奏应该和步奏3同步完成
list<string> liststring = new arraylist<string>();
4.2 将每次生成的一条字符串添加到集合中,注意利用集合的 contains() 方法判断集合中之前是否已存在相同的字符串(虽然概率很小)。
//判断当前的list容器中是否已有刚生成的字符串,满足每条字符串不可重复性
if(!(liststring.contains(stringbuffer.tostring()))){
liststring.add(stringbuffer.tostring());
}else {
//i-- 如果不满足则重新生成
i--;
}
5 最后对集合排序
5.1 调用 collections.sort() 方法对集合排序,其排序的规则如下:
从左向右原则,且0-9
数字优先原则,且a-z
字母大写优先原则,且a-z
总的代码
import java.util.arraylist;
import java.util.collection;
import java.util.collections;
import java.util.list;
import java.util.random;
public class randomstring {
public static void main(string[] args) {
list<string> strlist = randomstring();
system.out.println("------随机生成的10条字符串-------");
for (string string : strlist) {
system.out.println(string);
}
system.out.println("------------排序后------------");
collections.sort(strlist);
for (string string : strlist) {
system.out.println(string);
}
}
public static list<string> randomstring(){
//将所有的大小写字母和0-9数字存入字符串中
string str = "aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz0123456789";
random random = new random();
list<string> liststring = new arraylist<string>();
string strarray[ ] = new string[10];
//生成10条长度为1-10的随机字符串
for (int i = 0; i < 10; i++) {
stringbuffer stringbuffer = new stringbuffer();
//确定字符串长度
int stringlength = (int) (math.random()*10);
for (int j = 0; j < stringlength; j++) {
//先随机生成初始定义的字符串 str 的某个索引,以获取相应的字符
int index = random.nextint(str.length());
char c = str.charat(index);
stringbuffer.append(c);
}
//判断当前的list容器中是否已有刚生成的字符串,满足每条字符串不可重复性
if (!(liststring.contains(stringbuffer.tostring()))) {
liststring.add(stringbuffer.tostring());
}else {
i--;
}
}
return liststring;
}
}
输出答案不唯一
以上就是java中如何生成随机字符串数组的方法介绍的详细内容。