`
xurichusheng
  • 浏览: 344960 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用Comparator做对象的排序

阅读更多

 

之前在面试的时候,人家老是问怎么对对象进行排序。

虽然在项目中也有看到过人家写的代码,但是自己没亲自写过,也没什么记得住。

今天闲来没事,自己写了个简单的。

 

 

框架:Spring  Hibernate

          具体的配置这里不贴出来了。

 

主要是用 java.util. Collections的方法 sort(List <T> list, Comparator <? super T> c)

 

下面是代码:

 

实体类:

 

import java.io.Serializable;

public class UserTest implements Serializable {

	/**
	 * @Fields serialVersionUID : TODO
	 */
	private static final long serialVersionUID = 9171568900755918349L;

	private String userId;
	private String userName;
	private int age;
	
	@Override
	public String toString() {
		
		StringBuffer buf = new StringBuffer();
		
		buf.append("UserTest:[");
		buf.append("userId=").append(getUserId());
		buf.append(",userName=").append(getUserName());
		buf.append(",age=").append(getAge());
		buf.append("]");
		
		return buf.toString();
	}
	
	//省略 setter/getter 方法
}
 

DAO层代码也省略,直接贴出测试代码:

 

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;

import junit.framework.TestCase;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestUserDAO extends TestCase {

	private IUserTestDAO userTestDAO = null;

	@Override
	protected void setUp() throws Exception {

		try {
			AbstractApplicationContext act = new ClassPathXmlApplicationContext(
					"applicationContext.xml");
			userTestDAO = (IUserTestDAO) act.getBean("userTestDAO");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void getListUser() {

		try {
			List<UserTest> list = userTestDAO.findObjects("from UserTest");

			// 根据userName降序排序
			Collections.sort(list, new Comparator<UserTest>() {

				@Override
				public int compare(UserTest o1, UserTest o2) {
					return o2.getUserName().compareTo(o1.getUserName());
				}

			});

			for (UserTest user : list) {
				System.out.println(user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

如果要根据userName做升序排序,只需要改成:

 

o1.getUserName().compareTo(o2.getUserName());

 

注意 o1和o2的顺序。

 

测试结果:

UserTest:[userId=fdebc42b-18e9-49b0-8903-7068b0d9e652,userName=ccc,age=33]
UserTest:[userId=1bec68d8-e781-43fb-909e-78da901353ba,userName=bbb,age=22]
UserTest:[userId=3d174d47-db21-4805-b631-f12ffd0dbacc,userName=aaa,age=11]

 

下面是数据库中的值:


  • 大小: 20.1 KB
分享到:
评论

相关推荐

    程序实现时间排序Comparator

    标题与描述均提到了“程序实现时间排序Comparator”,这表明文章的主题是关于如何在Java编程环境中使用`Comparator`接口来实现基于时间的排序。在Java中,`Comparator`是一个功能强大的工具,允许开发者自定义对象的...

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

    在Java编程中,`Comparator`接口是用于比较对象的关键工具,尤其在进行自定义排序时。这个接口提供了`compare()`方法,根据特定的规则来决定两个对象的相对顺序。当需要根据多个排序条件对集合进行排序时,可以使用...

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

    在`List`对象集合中使用`Comparator`进行排序,通常需要调用`Collections.sort()`或`list.sort()`方法。例如,假设我们有一个`Person`类,其中包含`name`和`age`属性,我们想要根据年龄对`Person`对象列表进行排序:...

    Compable和Comparator自定义对象属性排序

    可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组

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

    JAVA使用Comparator接口实现自定义排序 JAVA中Comparator接口是Java Collections ...JAVA使用Comparator接口实现自定义排序是非常有用的技术,可以满足我们对对象排序的需求,并且提供了很高的灵活性和可扩展性。

    java排序Comparator和Comparable

    使用`Comparator`排序时,可以传递给`Collections.sort()`或`Arrays.sort()`方法,例如: ```java List&lt;MyObject&gt; list = ...; Collections.sort(list, new MyComparator()); ``` 此外,`Comparator`还可以通过...

    Comparator 排序器

    在Java编程语言中,`Comparator`接口是一种非常实用且灵活的工具,用于控制对象的排序方式。它允许开发人员自定义对象的比较逻辑,从而实现对集合(如`List`)中的元素进行排序。`Comparator`接口在`java.util`包中...

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

    本教程将深入探讨如何使用`Comparator`来实现对对象集合的定制排序。 `Comparator`接口位于`java.util`包下,它定义了一个方法`compare(T o1, T o2)`,用于比较两个对象的顺序。当我们需要根据自定义规则对集合中的...

    String,number,String+number的Comparator排序

    在Java编程语言中,`Comparator`接口用于自定义对象的排序规则。`String`, `number`以及`String+number`的`Comparator`排序涉及到如何按照特定逻辑比较字符串、数字以及字符串与数字组合的对象。这篇博客文章(链接...

    arraylist 对象 数组排序

    在文件名为"ComparatorTest"的场景下,可能包含了一个测试用例,演示如何使用Comparator对ArrayList中的对象进行排序。通过阅读和理解这个测试用例,我们可以更深入地了解Comparator的工作原理以及如何在实际项目中...

    Java 对象排序详解.rar_java 对象排序_对象_排序

    在Java编程语言中,对象排序是一项关键操作,特别是在处理集合数据结构时。本文将深入探讨如何对ArrayList、HashSet、TreeSet以及数组中的对象进行排序。理解这些排序机制对于编写高效且可维护的代码至关重要。 ...

    java 按对象属性排序

    这里我们探讨的主题是如何根据对象的属性进行排序,结合提供的`Simple.java`和`User.java`文件,我们可以假设这是一个关于自定义对象排序的例子。下面将详细解释相关知识点。 1. **Comparable接口**: Java中的`...

    java Comparator 用法 例子

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

    java使用stream对日期排序

    假设我们有一个`LocalDate`对象的列表`List&lt;LocalDate&gt; dates`,可以使用以下步骤进行排序: ```java List&lt;LocalDate&gt; sortedDates = dates.stream() .sorted(Comparator.naturalOrder()) .collect(Collectors...

    多个对象列表排序

    总之,对不同类型对象的列表进行排序是一项常见的任务,通过Java的`Comparator`接口和`Collections.sort()`或`List.sort()`方法,我们可以轻松地根据一个或多个属性实现多条件排序。在Android开发中,理解并熟练运用...

    java对象排序

    本文将深入探讨Java中的对象排序,包括基本概念、API使用以及自定义排序规则。 ### 1. Java对象排序基础 在Java中,我们可以对两种类型的元素进行排序:原始类型(如int、char)和对象。对于对象,排序主要涉及到`...

    java List中对象多属性排序及各属性排序设置

    总结来说,Java中的List可以通过自定义Comparator或者利用泛型和方法引用来实现对象多属性的动态排序。这种技术在处理复杂数据结构时非常有用,使得代码更加简洁且易于维护。通过学习和实践这部分内容,开发者可以...

    Java对象排序中文排序SortedSet排序使用和源码讲

    本主题将深入探讨如何使用SortedSet接口来实现Java对象的中文排序,并通过源码分析理解其工作原理。 首先,SortedSet是Java集合框架中的一个接口,它继承自Set接口并添加了排序的特性。SortedSet的主要实现类有...

    java 对象 排序

    总的来说,Java对象排序是通过实现`Comparable`接口或使用`Comparator`来完成的。理解这两个接口的用法,并熟练掌握`Collections.sort()`和`Arrays.sort()`的使用,是成为熟练Java开发者的必备技能。在实际编程中,...

    JAVA 对象数组按照多个属性进行排序

    对于对象数组,如果对象类实现了`Comparable`接口,我们可以直接使用`Arrays.sort()`方法对数组进行排序。但是,当需要按照多个属性排序时,我们需要自定义`Comparator`。例如,假设我们有一个`Person`类,包含`...

Global site tag (gtag.js) - Google Analytics