1.arraylist没有排序,但是ArrayList实现list接口,Collection有sort(List list)方法,所以可以用Collection的sort()的方法实现arrarylist的排序,但是只能是字符串列表ArrayList<String string>进行排序
2.为什么只能对字符串列表ArrayList<String string>进行排序?
public static <T extends Comparable<? super T>> void sort(List<T> list);//对于泛型来说,extends表示“是一个......”
根据sort的定义可以知道,List<T>中的T必须要实现Comparable,而String实现了Comparable接口,Comparable接口只有一个方法compareTo();所以List(String string)可以用sort()排序,对于一般自定义的对象,比如User对象,有name,age,如果要按照对象的name排序,可以这样写
class User implements Comparable<User>{
String name;
String age;
}
public int compareTo(User u){
return name,comparteTo(u.getName());
}
getter .......
setter......
这样定义好User,就可以用Collection.sort(User user)根据对象的name进行排序了
3.升级版sort()方法
如果又想按照age进行排序呢?
sort()还有这样的写法sort(List list,Comparator comparator);
先定义一个Comparator
class AgeComparator implements Comparator<User>{
public int compare(User one,User two){
return one.getAge().compartTo(two.getAge());
}
}
这样定义好User与Comparator,就可以用Collection.sort(List(User user.Comparator AgeComparator))根据对象的age进行排序了,同理也可以改成nama