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);
}
}
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);
}
}传错了,这个才是
你查java的API文档就可以发现,String类实现了Comparable接口,但是StringBuilder类并没有实现这个接口,所以它不行。还有,其实那时候我是被陷害的,群众不给机会,我只能先做个猿先,找机会强转,重新new成人。
我后面的理解了,不过并没有提到String与StringBuilder写sort方法时不同。而且StringBuilder写Comparator我也写出来了。
这些都不重要,我只想问,柯景腾你不是吸毒进去了吗?
这个,你下两节就可以学到,为何collections.sort(StringBuilder类)不行。我也是刚知道。。。
首先你的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);
}
}List<StringBuilder> strList=new ArrayList<StringBuilder>();
你把这一句放进main方法里就可以了,mian方法是个static修饰的方法