问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

哪位大神指导一下关于创建对象的位置StringBuilder sr=new StringBuilder();



public void testString() {

List<String> xs=new ArrayList<String>();

String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

Random random=new Random();

for(int i=0;i<10;i++) {

StringBuilder sr=new StringBuilder();

do {

int num1=random.nextInt(10)+1;

for(int y=0;y<num1;y++) {

int num= random.nextInt(62);

sr.append(str.charAt(num));

}}while(xs.contains(sr));

xs.add(sr.toString());

}

System.out.println("-------排序前------------");

for (String string : xs) {

System.out.println(string);

}

System.out.println("-------------排序后-------------------------");

Collections.sort(xs);

for (String string : xs) {

System.out.println(string);

}

为什么StringBuilder sr=new StringBuilder();只能在for循环里面创建,如果在for外面创建的话生成的随机字符串他就会自动排序好了?这是为什么?

提问者:能你所做 2018-09-17 23:56

个回答

  • 慕莱坞5659625
    2018-10-26 18:01:25

    我是写在循环外面的,最开始也有问题,看控制台输出,是因为每次创建完字符串后,不处理StringBuffer对象的话,下次创建的是直接加在后面的;

    所以楼主写里面,每次都新new一个没问题

    写外面的话,创建完后,要清空一下

  • wy1311
    2018-09-18 13:17:00

    num1 在调用随机函数的时候为什么要在后面+1呢? 加一和不加一好像没什么区别啊

  • 能你所做
    2018-09-18 00:03:32

    懂了!