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修饰的方法