Java 生成随机字符串数组的实例详解
java 生成随机字符串数组的实例详解
利用collections.sort()方法对泛型为string的list 进行排序。具体要求:
1.创建完list<string>之后,往其中添加十条随机字符串
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 生成随机字符串数组的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: MySQL中的semi-join
下一篇: 防毒技巧 从硬盘及内存中检测潜存病毒