package edu.eurasia.list.collection;
import java.util.*;
/**
* 类名: <br>
* 功能:(字符随机数排序)<br>
* 作者:admin <br>
* 日期:2018/7/16
*/
public class CollectionTest {
/**
* 对Integer泛型进行排序
*/
public void testSort1(){
List<Integer> integerList = new ArrayList<>();
//插入随机数
Random random = new Random();
Integer k;
for (int i = 0; i < 10; i++) {
//确保不重复
do {
k = random.nextInt(100);
} while (integerList.contains(k));
integerList.add(k);
System.out.println("成功添加整数" + k);
}
System.out.println("----------排序前---------");
for (Integer integer:integerList
) {
System.out.println("元素" + integer);
}
Collections.sort(integerList);
System.out.println("----------排序后---------");
for (Integer integer: integerList
) {
System.out.println("元素" + integer);
}
}
/**
* 对String泛型进行排序
*
*/
public void testSort2(){
List<String> stringList = new ArrayList<>();
stringList.add("microsoft");
stringList.add("google");
stringList.add("lenovo");
System.out.println("-------------排序前----------");
for (String string:stringList
) {
System.out.println("元素" + string);
}
Collections.sort(stringList);
System.out.println("-------------排序后----------");
for (String string:stringList
) {
System.out.println("元素" + string);
}
}
/**
* 创建完List<String>之后,往其中添加10条随机字符串
* 每条字符串的长度为10以内的随机整数
* 每条字符串的每个字符都为随机生成的字符,字符可以重复
* 每条随机字符串不可重复
*
*/
public void homework(){
List<String> stringList = new ArrayList<>();
int length = 10;
String str = "zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
for (int i =0;i<length;i++){
StringBuffer sb = new StringBuffer();
do {
//生成随机数
Random random = new Random();
for (int j = 0;j<random.nextInt(9)+1;j++){
int number = random.nextInt(62);
sb.append(str.charAt(number));
}
} while (stringList.contains(sb.toString()));
stringList.add(sb.toString());
System.out.println("成功添加字符串" + sb.toString());
}
System.out.println("-----------排序前-----------");
for (String string:stringList
) {
System.out.println("元素" + string);
}
Collections.sort(stringList);
System.out.println("-----------排序后-----------");
for (String string:stringList
) {
System.out.println("元素" + string);
}
}
public static void main(String[] args){
CollectionTest ct = new CollectionTest();
// ct.testSort1();
// ct.testSort2();
ct.homework();
}
}
打开App,阅读手记
热门评论
带参的nextInt(int x)则会生成一个范围在0~x(不包含X)内的任意正整数,取值为[0,x)
这里的9要改成10
for (int j = 0;j<random.nextInt(10)+1;j++){
int number = random.nextInt(62);
sb.append(str.charAt(number));
}
如果列表中已经包含该字符串(即随机生成了一个重复的字符串),满足while循环,继续生成随机数,向StringBuilder中添加字符,但是StringBuilder中还有原来随机生成的重复字符串,故循环再加上字符,就会超过规定的字符长度。您看看是这样吗?