首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Comparator兑现排序

2012-09-18 
Comparator实现排序转自:Comparator实现排序 在java.util包中有一个Collections类,里面实现了对列表排序的

Comparator实现排序

转自:Comparator实现排序

在java.util包中有一个Collections类,里面实现了对列表排序的功能,提供了一个静态方法sort方法,接收一个列表和一个Comparator接口的实例
实现的大致步骤如下:
1,先把列表转换为数组
2,通过Arrays的sort方法对数组排序,传入Comparator接口的实例
3,然后再把排好序的数组的数值设置到原来的列表对象中去
如果Comparator接口的compare方法返回一个小于0的数,表示被比较的两个对象中,前者小于后者
见下面的实例
要排序的对象:

package collectionsSort;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;//直接使用Collections来排序public class Client {public static void main(String[] args) {//     准备要测试的数据UserModel um1 = new UserModel("u1","user1",21);UserModel um2 = new UserModel("u2","user2",24);UserModel um3 = new UserModel("u3","user3",25);UserModel um4 = new UserModel("u4","user4",22);//添加到列表中List<UserModel> list = new ArrayList<UserModel>();list.add(um1);list.add(um2);list.add(um3);list.add(um4);System.out.println("排序前-------------");printList(list);//实现比较器,也可以单独用一个类来实现Comparator c = new Comparator(){@Overridepublic int compare(Object arg0, Object arg1) { //这里实现按照用户年龄大小来排序UserModel temp1 = (UserModel) arg0;UserModel temp2 = (UserModel) arg1;if(temp1.getAge()>temp2.getAge())return 1;else if(temp1.getAge()<temp2.getAge())return -1;else if(temp1.getAge()==temp2.getAge())return 0;return 0;}};//排序,主要就是依靠Comparator接口的具体实现Collections.sort(list,c);System.out.println("排序后-------------");printList(list);}private static void printList(List<UserModel> list) {for(UserModel um:list){System.out.println(um);}}}

?

?

热点排行