java-Collections的sort集合排序方法

xiaoxiao2021-02-28  124

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;//升序 } }
转载请注明原文地址: https://www.6miu.com/read-23175.html

最新回复(0)