`

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”,这表明文章的主题是关于如何在Java编程环境中使用`Comparator`接口来实现基于时间的排序。在Java中,`Comparator`是一个功能强大的工具,允许开发者自定义对象的...

    String,number,String+number的Comparator排序

    `Comparator&lt;String&gt;`的实现通常会覆盖`compare()`方法,其中两个`String`对象作为参数,返回值决定了它们的相对顺序。 其次,`number`的排序通常涉及到`Integer`, `Double`, `Float`等数值类型。在Java中,这些...

    Comparator 排序器

    此外,由于`Comparator`允许传递多个实例,因此可以很容易地实现多级排序或其他更复杂的排序需求。 综上所述,`Comparator`接口为Java开发者提供了一种高效且灵活的方式来控制对象的排序顺序,使得数据管理变得更加...

    java排序Comparator和Comparable

    在Java编程语言中,排序是数据处理中一个非常常见的需求,而`Comparator`和`Comparable`接口则是实现排序的关键工具。这两个接口都是用于比较对象,但它们的应用场景和使用方式有所不同。 首先,`Comparable`接口是...

    Java中的Comparator 对多个排序条件的处理

    当需要根据多个排序条件对集合进行排序时,可以使用多个`Comparator`组合的方式来实现。这篇博客文章"Java中的Comparator 对多个排序条件的处理"可能详细讨论了如何实现这一目标。 首先,`Comparator`的基本用法是...

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

    JAVA使用Comparator接口实现自定义排序 JAVA中Comparator接口是Java Collections Framework中的一个重要接口,它提供了自定义排序的能力。通过实现Comparator接口,我们可以根据自己的需求来定义对象的排序规则。 ...

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

    标准库提供了多种排序方式,其中一种是使用`Comparator`接口来实现自定义排序。本教程将深入探讨如何使用`Comparator`来实现对对象集合的定制排序。 `Comparator`接口位于`java.util`包下,它定义了一个方法`...

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

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

    List对象集合的排序:比较器Comparator(简单例子)

    `Comparator`是一个可以比较两个对象的类,它提供了一种方式来定义自定义的比较规则,从而实现灵活的排序逻辑。 `Comparator`接口位于`java.util`包中,它包含了一个方法`compare(T o1, T o2)`,这个方法需要比较两...

    Java用Comparator来排序.pdf

    在Java 8之前,我们通常通过实现Comparator接口并重写`compare()`方法来创建自定义的比较器。例如: ```java inventory.sort(new Comparator() { public int compare(Apple a1, Apple a2){ return a1.getWeight()...

    双列共存的listview

    例如,可以使用Collections类的`sort()`方法,结合自定义Comparator实现排序逻辑。排序完成后,需通知Adapter数据已更新,通过调用`notifyDataSetChanged()`方法刷新ListView。 此外,"SecondAndroid"可能是指该...

    java实现ArrayList根据存储对象排序功能示例

    java实现ArrayList根据存储对象排序功能示例主要介绍了java中ArrayList的排序功能,通过构建新的比较对象Comparator实现排序操作。本文将详细讲解java中ArrayList的相关运算和排序操作技巧,并提供了一个实例形式的...

    Java中Comparable和Comparator 2种实现方式学习

    在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...

    java Comparator 用法 例子

    Java中的Comparator接口是排序的关键工具,它允许程序员自定义对象的比较规则,从而在集合、数组或树结构(如TreeSet、TreeMap)中实现定制化的排序。在Java的Collections框架中,Comparator扮演着重要的角色,特别...

    java代码规范1

    当需要按特定标准排序集合中的元素时,可以使用`Collections.sort()`方法或者自定义Comparator实现排序。 - **稳定性(order)**:在排序过程中,稳定性是指相等的元素在排序后相对位置不变。例如,如果有两个元素...

    android全国城市仿联系人选择

    在Android中,可以使用Collections.sort()方法配合Comparator实现排序。 7. **UI设计**:Sidebar的设计风格应与整体应用保持一致,可能需要自定义Sidebar的样式和颜色。同时,城市列表项也需要进行设计,使其清晰易...

    java面试综合java面试综合.doc

    11. **排序算法**:Java中实现排序可以通过内置的Collections.sort()方法,或者自定义Comparator实现排序。序列化是将对象转换为字节流,便于存储和传输,需实现Serializable接口。 12. **JSP动态INCLUDE与静态...

    JAVA小程序-世界杯足球赛成绩统计

    在Java程序中,我们可以使用Collections.sort()方法结合自定义Comparator实现排序。 总的来说,"JAVA小程序-世界杯足球赛成绩统计"项目是一个典型的面向对象编程示例,涵盖了数据结构设计、对象间交互、数据库操作...

    java教程之二个arraylist排序的示例分享

    首先,我们创建了一个包含多个`Student`对象的ArrayList,然后利用`Collections.sort()`方法和自定义的Comparator实现排序。 1. `Collections.sort()`方法是Java集合框架提供的通用排序方法,它接受一个List和可选...

    java使用stream对日期排序

    在Java编程中,Stream API是Java 8引入的一个强大特性,...无论是在简单的日期列表还是复杂的数据结构中,都可以轻松地实现排序功能。实践过程中,可以根据实际需求选择合适的日期类型和排序规则,使代码更加简洁易读。

Global site tag (gtag.js) - Google Analytics