Java线性表的排序
——@梁WP
前言:刚才在弄JDBC的时候,忽然觉得order-by用太多了没新鲜感,我的第六感告诉我java有对线性表排序的封装,然后在eclipse里随便按了一下“.” ,哈哈,竟然真有这么一个静态方法public static <T> void sort(List<T> list, Comparator<? super T> c)。
1.先定义一个模型:
package model; /** * User.java * * @author 梁WP 2014年3月3日 */ public class User { private String userName; private int userAge; public User() { } public User(String userName, int userAge) { this.userName = userName; this.userAge = userAge; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getUserAge() { return userAge; } public void setUserAge(int userAge) { this.userAge = userAge; } }
2.然后定义一个比较器,实现java.util.Comparator接口,在compare()方法编写比较规则:
package util; import java.util.Comparator; import model.User; /** * ComparatorUser.java * * @author 梁WP 2014年3月3日 */ public class ComparatorUser implements Comparator<User> { @Override public int compare(User arg0, User arg1) { // 先比较名字 int flag = arg0.getUserName().compareTo(arg1.getUserName());
// 如果名字一样,就比较年龄 if (flag == 0) { return arg0.getUserAge() - arg1.getUserAge(); } return flag; } }
3.排序的时候用java.util.Collections里面的sort(List list, Comparator c)方法:
package test; import java.util.ArrayList; import java.util.Collections; import java.util.List; import util.ComparatorUser; import model.User; /** * TestApp.java * * @author 梁炜平 2014年3月3日 */ public class TestApp { public static void main(String[] arg0) { List<User> userList = new ArrayList<User>(); // 插入数据 userList.add(new User("A", 15)); userList.add(new User("B", 14)); userList.add(new User("A", 14)); // 排序 Collections.sort(userList, new ComparatorUser()); // 打印结果 for (User u : userList) { System.out.println(u.getUserName() + " " + u.getUserAge()); } } }
4.运行结果:
A 14 A 15 B 14
原文:http://www.cnblogs.com/liangweiping/p/3577788.html