为了账号安全,请及时绑定邮箱和手机立即绑定

哪里有问题?一直提示strList改为静态static


import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;


public class TempTest {

List<StringBuilder> strList=new ArrayList<StringBuilder>();


public static void main(String[] args) {

// TODO Auto-generated method stub

String st="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

StringBuilder strbd=new StringBuilder();

//StringBuilder str;

Random random=new Random();

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

do {

int length=random.nextInt(10);

for (int j = 0; j < length; j++) {

strbd.append(st.charAt(random.nextInt(62)));

}

} while (strList.contains(strbd));

strList.add(strbd);

}

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

for(StringBuilder sl : strList)

System.out.println(sl);

Collections.sort(strList);

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

for(StringBuilder sl : strList)

System.out.println(sl);


}


}



正在回答

6 回答

import java.util.ArrayList;

import java.util.Collections;
import java.util.List;
import java.util.Random;

public class TempTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
	 List<String> strList=new ArrayList<String>();
String st="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

//StringBuilder str;
Random random=new Random();
for (int i = 0; i < 10; i++) {
	StringBuilder strbd=new StringBuilder();

do {
int length=random.nextInt(10);
for (int j = 0; j < length; j++) {
strbd.append(st.charAt(random.nextInt(62)));
}
} while (strList.contains(strbd));
strList.add(strbd.toString());
}
    

System.out.println("---------------排序前--------------------");
for(String sl : strList)
System.out.println(sl);
Collections.sort(strList);
System.out.println("---------------排序后--------------------");
for(String sl : strList)
System.out.println(sl);

}

}

传错了,这个才是

0 回复 有任何疑惑可以回复我~
#1

wshyzx 提问者

很好!
2016-07-28 回复 有任何疑惑可以回复我~

你查java的API文档就可以发现,String类实现了Comparable接口,但是StringBuilder类并没有实现这个接口,所以它不行。还有,其实那时候我是被陷害的,群众不给机会,我只能先做个猿先,找机会强转,重新new成人。

0 回复 有任何疑惑可以回复我~
#1

wshyzx 提问者

是啊,从new了个对象开始,我也不是单身狗了
2016-07-29 回复 有任何疑惑可以回复我~

我后面的理解了,不过并没有提到String与StringBuilder写sort方法时不同。而且StringBuilder写Comparator我也写出来了。

这些都不重要,我只想问,柯景腾你不是吸毒进去了吗?

0 回复 有任何疑惑可以回复我~

这个,你下两节就可以学到,为何collections.sort(StringBuilder类)不行。我也是刚知道。。。

0 回复 有任何疑惑可以回复我~

首先你的List<StringBuilder> strList=new ArrayList<StringBuilder>();,得放在main方法里,还有StringBuilder strbd=new StringBuilder();,这个得放在for循环里,因为如果不放在for循环,他不会重新构造个对象,然后当一直是同一个对象时,使用它的append方法在后边添加字符时,你只会产生一个字符串,不会产生十个随机字符串。然后sort排序为何报错,我觉得可能是没有StringBuilder类的排序,虽然它也是属于String类型。下面是我修改你的代码后的代码。

import java.util.ArrayList;

import java.util.Collections;
import java.util.List;
import java.util.Random;

public class TempTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
	 List<String> strList=new ArrayList<String>();
String st="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

//StringBuilder str;
Random random=new Random();
for (int i = 0; i < 10; i++) {
	StringBuilder strbd=new StringBuilder();

do {
int length=random.nextInt(10);
for (int j = 0; j < length; j++) {
strbd.append(st.charAt(random.nextInt(62)));
}
} while (strList.contains(strbd));
strList.add(strbd.toString());
}
    
Collections.sort(strList);
System.out.println("---------------排序前--------------------");
for(String sl : strList)
System.out.println(sl);

System.out.println("---------------排序后--------------------");
for(String sl : strList)
System.out.println(sl);

}

}


0 回复 有任何疑惑可以回复我~

List<StringBuilder> strList=new ArrayList<StringBuilder>();
你把这一句放进main方法里就可以了,mian方法是个static修饰的方法

0 回复 有任何疑惑可以回复我~
#1

wshyzx 提问者

挪进来后还剩一句 Connections.sort(strList)报错 报的错跟6-6 2分45秒 一样 http://www.imooc.com/video/4310 怎么办?
2016-07-27 回复 有任何疑惑可以回复我~
#2

凡人不羡仙 回复 wshyzx 提问者

那个错误不是有说明么?泛型类型没有继承或者实现对应的接口,你再自己看看
2016-07-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

哪里有问题?一直提示strList改为静态static

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信