Java中的2种集合排序方法介绍
程序员文章站
2024-03-01 18:11:10
直接上代码:
import java.util.arraylist;
import java.util.collections;
import java.ut...
直接上代码:
import java.util.arraylist; import java.util.collections; import java.util.comparator; import java.util.list; /** * * <p> * classname collectionssort * </p> * <p> * description 主要介绍两种集合的排序算法<br/> * 第一:java.util.collections.sort(java.util.list),要求所排序元素必须实现java.lang.comparable接口 <br/> * 第二:java.util.collections.sort(java.util.list, java.util.comparator),这个方法要求实现java.util.comparator接口 <br/> * 第三:下面的例子使用的是对int型属性排序,对string属性排序可以使用以下方法<br/> * public int compareto(cat o){return this.getname().compareto(o.getname(0);}<br/> * 第四:compareto()函数的说明 <br/> * 如果 结果;<br/> * <0 a<b ;<br/>= * ==0 a==b;<br/> * >=0 a>b; * </p> * * @author wangxu wangx89@126.com * <p> * date 2014-9-16 下午04:52:57 * </p> * @version v1.0 * */ public class collectionssort { public static void main(string[] args) { // method1();测试第一个方法 method2();// 测试第二个方法 } public static void method1() { list<cat> list = new arraylist<cat>(); cat c = new cat("a", 10); list.add(c); c = new cat("b", 20); list.add(c); c = new cat("c", 3); list.add(c); // 升序排列输出 collections.sort(list); system.out.println(list); // 降序排列输出 collections.sort(list, collections.reverseorder()); system.out.println(list); } public static void method2() { list<cat> list = new arraylist<cat>(); cat c = new cat("a", 10); list.add(c); c = new cat("b", 20); list.add(c); c = new cat("c", 3); list.add(c); comparator<cat> catcomparator = new cat(); // 升序排列输出 collections.sort(list, catcomparator); system.out.println(list); // 降序排列输出 catcomparator = collections.reverseorder(catcomparator); collections.sort(list, catcomparator); system.out.println(list); } } class cat implements comparable<cat>, comparator<cat> { private int age; private string name; public cat() { } public cat(string name, int age) { this.age = age; this.name = name; } public int getage() { return this.age; } public string getname() { return this.name; } public void setage(int age) { this.age = age; } public void setname(string name) { this.name = name; } // 实现了comparable接口,不要重写该方法 @override public int compareto(cat o) { // todo auto-generated method stub return this.age - o.age; } @override public string tostring() { // todo auto-generated method stub return "名字:" + getname() + ",年龄:" + getage(); } // 实现了comparator接口,需要重写该方法 @override public int compare(cat o1, cat o2) { // todo auto-generated method stub return o1.getage() - o2.getage(); } }