import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
/**
* Collections.sort方法实现排序
* Collections是集合的工具类,它提供了很多便于我们操作集合的方法
* 其中就有用于集合排序的sort方法
* -void sort(List<T> list):该方法的作用是对给定的集合元素进行自然排序
*
* 在使用Collecions的sort排序的集合元素都必须是Comparable接口的实现类,该接口表示其子类是可比较的
* 因为实现该接口必须重写抽象方法:-int compareTo(T t)
*
* 自然排序(Collections.sort(list)):list集合中的元素必须实现Comparable接口,重写compareTo方法,一般用于java对提供的API对象进行排序(String,Date,Integer等)
* 自定义排序(Collections.sort(list,比较器));对list集合中的对象没有限制,必须提供“比较器”对象,sort会利用比较器进行比较大小进行排序,用途广泛:可以进行任意数据比较
*/
List<String> list=new ArrayList();
list.add("Aange");
list.add("erge");
list.add("dage");
Collections.sort(list);
System.out.println(list);
//sort方法是如何比较两个字符串大小的
//Aange 比 dage小?
//String类型提供比较字符串大小的方法
//compare 比较 to 与xxx比较
//compareTo 返回三种状态:>0 <0 ==0
//n>0表示第一个数大
//n<0表示第一个数小
//n=0表示相等 compareTo比较值为0时equals为true
int n="Aange".compareTo("dage");
System.out.println(n);//-35<0
List<Cat> list1=new ArrayList<Cat>();
list1.add(new Cat(9));
list1.add(new Cat(15));
list1.add(new Cat(30));
list1.add(new Cat(13));
Collections.sort(list1,new ByAge());//按自定义比较
/**输出比较结果**/
for(int i=0;i<list1.size();i++) {
System.out.println(list1.get(i).age);
}
}
}
/**
* 自定义比较器 Comparator
*
*/
class ByAge implements Comparator<Cat> {
//自定义比较算法:按照猫对象的年龄比较大小
//返回>0则o1>02;返回<0则o1<o2;返回=0,o1=o2
@Override
public int compare(Cat o1, Cat o2) {
return o1.age-o2.age;
}
}
//自然排序
class Cat implements Comparable<Cat>{
int age;
public Cat(int age) {
super();
this.age = age;
}
@Override
public int compareTo(Cat o) {
return this.age-o.age;//升序
}
}
java-Collections的sort集合排序方法
最新推荐文章于 2024-05-29 13:34:09 发布