深入理解sort(),以及如何实现Arraylist对像排序

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

猜你喜欢

转载自blog.csdn.net/qq_35261162/article/details/80734949