java 中 Collections.sort() 排序函数的用法
用 Collections.sort 方法对 list 排序有两种方法 接口,如下: 第一种是 list 中的对象实现 Comparable 接口,如下: /** * 根据 order 对 User 排序 */ public class User implements Comparable
{ private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getOrder() { return order; } public void setOrder(Integer order) { this.order = order; } public int compareTo(User arg0) { return this.getOrder()pareTo(arg0.getOrder()); } } 测试一下: public class Test{
public static void main(String[] args) { User user1 = new User(); user1.setName("a"); user1.setOrder(1); User user2 = new User(); user2.setName("b"); user2.setOrder(2); List list = new ArrayList(); //此处 add user2 再 add user1 list.add(user2); list.add(user1); Collections.sort(list); for(User u : list){ System.out.println(u.getName()); }
} } 输出结果如下 a b 第二种方法是根据 Collections.sort 重载方法来实现,例如: 重载方法来实现, 例如: /** * 根据 order 对 User 排序 */ public class User { //此处无需实现 Comparable 接口 private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getOrder() { return order; } public void setOrder(Integer order) { this.order = order; } }
主类中这样写即可: public class Test{ public static void main(String[] args) { User user1 = new User(); user1.setName("a"); user1.setOrder(1); User user2 = new User(); user2.setName("b"); user2.setOrder(2); List list = new ArrayList(); list.add(user2); list.add(user1);
Collections.sort(list,new Comparator(){ public int compare(User arg0, User arg1) { return arg0.getOrder()pareTo(arg1.getOrder()); } }); for(User u : list){
System.out.println(u.getName()); } } } 输出结果如下 a b 前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
择优用之。
类 Arrays public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序。该排序 算法是一个经过调优的快速排序法,改编自 Jon L. Bentley 和 M. Douglas McIlroy 合著的 Engineering a Sort Function", Software-Practice and Experience Vol. 23(11) P. 1249-1265 (November 1993)。此算法在许多数据集 上提供 n*log(n) 性能,这导致其他快速排序会降低二次型性能。
参数: a - 要排序的数组
你是什么 api 啊,我都是从上面复制来,你来个 api 里没有。。 java.util.Arrays
请问在 JAVA 中 VECTOR 排序一定要转成数组吗?有没有排序函数?
浏览次数:3183 次悬赏分:30 | 解决时间:2007-2-28 00:05 | 提问者:amberlike3
比如这个题 如果要对容器元素降序排 只能这样写吗? 不好意
思,新手很多不 很明白 import java.util.*; public class Paixu { Vector aa; Paixu() { aa=new Vector(); } public void add(String a) {
aa.addElement(a); } public static void main(String args[]) { Paixu ak=new Paixu(); for(int i=0;i } } class Student implements Comparable{ String name; int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } public String toString(){ return name+":"+age;
} public int compareTo(Object o) { Student s=(Student)o; return this.age-s.age; }
} 当然像 String 和 8 种基本类型都已经实现了 Comparable 方法,可以直接放到数 组中自动排序