`

Comparator实现排序

阅读更多

转自:Comparator实现排序

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

package collectionsSort;
//用户数据的模型
public class UserModel {

	private String userName,userId;
	private int age;
	public String getUserName() {
		return userName;
	}
	public String getUserId() {
		return userId;
	}
	public int getAge() {
		return age;
	}
	public UserModel(String userName, String userId, int age) {
		this.userName = userName;
		this.userId = userId;
		this.age = age;
	}
	
	public String toString(){
		return "userName="+userName+",userId="+userId+",age="+age;
	}
}

 排序的测试端

 

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(){

			@Override
			public 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);
		}
	}

}

 

 

分享到:
评论

相关推荐

    程序实现时间排序Comparator

    程序实现时间排序Comparator

    493.491.JAVA基础教程_常用类-使用Comparator实现定制排序(493).rar

    493.491.JAVA基础教程_常用类-使用Comparator实现定制排序(493).rar

    计算机后端-Java-Java核心基础-第22章 常用类 23. 使用Comparator实现定制排序.avi

    计算机后端-Java-Java核心基础-第22章 常用类 23. 使用Comparator实现定制排序.avi

    详解JAVA使用Comparator接口实现自定义排序

    主要介绍了JAVA使用Comparator接口实现自定义排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java汉字排序

    4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class PinyinComparator implements Comparator&lt;Object&gt; { 9. public int compare(Object o1, Object o2) { 10...

    Java编程实现中英混合字符串数组按首字母排序的方法

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...

    java排序代码

    由Comparator实现类对象负责集合元素的排序逻辑。 // 自定义比较器 class MyTreeSetCompartor implements Comparator { // 实现compare方法 @Override public int compare(Object o1, ...

    Android ComparatorDemo

    Comparable是在集合内部定义的方法实现的排序,而Comparator是在集合外部实现的排序,如果想实现排序,就需要在集合外定义Comparator接口的方法或在集合内实现Comparable接口的方法。 这里是一个简单的...

    struts2 sort实例

    一个实现了struts2标签的实例,指定进行排序的Comparator实现的方法

    Android ComparableDemo

    Comparable是在集合内部定义的方法实现的排序,而Comparator是在集合外部实现的排序,如果想实现排序,就需要在集合外定义Comparator接口的方法或在集合内实现Comparable接口的方法。 这里是一个简单的...

    java Lucene 中自定义排序的实现

    Lucene中的自定义排序功能和... SortComparatorSource接口的功能是返回一个用来排序ScoreDocs的comparator(Expert: returns a comparator for sorting ScoreDocs).该接口只定义了一个方法.如下: Java代码 /** * Crea

    Android 对Map按key和value分别排序的实例

    一. 理论准备 ...HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。 Map.Entry返回Collections视图。 二. key排序 Tr

    java中实现汉字按照拼音排序(示例代码)

    主要是对java中将汉字按照拼音排序的实现代码进行了详细的分析介绍。需要的朋友可以过来参考下,希望对大家有所帮助

    ComparatorTools.zip

    Comparator Tools 是 PHP 实现的 Java Compareable 接口,用来实现对象的排序已经一些排序的方法。 标签:Comparator

    实现元素比较1

    1. ==、equals、compareTo的关系 3. Comparable接口自然排序 4. comparator定制排序 5. 重写equals方法的标准

    再谈Comparator

    1.作用 Comparator接口包含很多方便的静态方法来创建比较器。这些方法可以用于lambda达 式或方法引用。 2. 使用方法 静态comparing方法取一个... 与手动实现一个Comparator相比,这当然要容易得多。另外,代码也加

    ArraySort排序

    ArraySort java数组排序的两种方法:实现Comparator接口,重写compare方法 2实现Comparable接口

    Android实现中文按拼音排序方法

    本文的需求是将一组数据按某一字段中文拼音排序,分享给大家Android实现中文按拼音排序方法,供大家参考,具体内容如下 1、Test测试类: PinyinComparator comparator = new PinyinComparator(); Collections....

    策略模式的实现源代码实例

    通过实现Comparator接口可以定义满足个各种需要的排序方式。 这个例子是通过一个Student的ArrayList,然后分别输出按照学生姓名字典排序结果和按照分数由高到低的排序结果。 是策略模式运用的一个很好实例!

Global site tag (gtag.js) - Google Analytics