要排序的类需要实现Comparator接口,重写compare方法:

user类及实现接口的内部类:

package test;

import java.util.Comparator;

public class User {
	private String userName;
	private int age;

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [userName=" + userName + ", age=" + age + "]";
	}

}

test:

package test;

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

import org.junit.Test;

public class TestSort {
	@Test
	public void main() {
		// TODO Auto-generated method stub
		User user1 = new User();
		user1.setUserName("ddd");
		user1.setAge(20);
		User user2 = new User();
		user2.setUserName("aaa");
		user2.setAge(30);
		User user3 = new User();
		user3.setUserName("ccc");
		user3.setAge(15);
		User user4 = new User();
		user4.setUserName("bbb");
		user4.setAge(20);
		List<User> users = new ArrayList<User>();
		users.add(user1);
		users.add(user2);
		users.add(user3);
		users.add(user4);
		Collections.sort(users, new MyComparator());
		for (User user : users) {
			System.out.println(user);
		}
	}

	class MyComparator implements Comparator {
		public int compare(Object obj1, Object obj2) {
			User u1 = (User) obj1;
			User u2 = (User) obj2;
			if (u1.getAge() > u2.getAge()) {
				return 1;
			} else if (u1.getAge() < u2.getAge()) {
				return -1;
			} else {
				// 利用String自身的排序方法。
				// 如果年龄相同就按名字进行排序
				return -u1.getUserName().compareTo(u2.getUserName());
			}
		}
	}
}

java运用Comparator为对象排序的更多相关文章

  1. [转] Java中Comparator进行对象排序

    [From] https://blog.51cto.com/thinklili/2063244 Java在8后引入了lambda表达式和流,使得排序方法有了变化 class User { int id ...

  2. List对象排序的通用方法

    转自 @author chenchuang import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Me ...

  3. Java - 简单的对象排序 - Comparator

    注:对象排序,就是对对象中的某一字段进行比较,以正序或倒序进行排序. 例: 需要排序的对象: public class Person { public int age; public String n ...

  4. 【java】实现Interface java.lang.Comparable<T>接口的int compareTo(T o)方法实现对象数组或链表或集合的排序,和挽救式对象比较器Interface java.util.Comparator<T>

    package 对象比较排序; import java.util.Arrays; class A implements Comparable<A>{ private String name ...

  5. [Java] 使用Comparator排序对象

    package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...

  6. Java对象排序

    java实现对象比较,可以实现java.lang.Comparable或java.util.Comparator接口 //Product.java import java.util.Date; //p ...

  7. Java 中Comparator 的使用,实现集合排序

    目标:实现对Person 对象的年龄,从小到大排序 1.实现排序 package com.app; import java.util.ArrayList; import java.util.Colle ...

  8. Java中Comparable和Comparator实现对象比较

    1.通过Comparable实现排序 package Comparable; import java.util.Arrays; public class ComparableUser implemen ...

  9. [个人原创]关于java中对象排序的一些探讨(三)

    这篇文章由十八子将原创,转载请注明,并标明博客地址:http://www.cnblogs.com/shibazijiang/ 对对象排序也可以使用Guava中的Ordering类. 构造Orderin ...

随机推荐

  1. Win 環境構建調試用TreeWalker

    語法 var ppTreeWalker = document.createTreeWalker(pRootNode, ulWhatToShow, pFilter, fEntityReferenceEx ...

  2. C++ Primer : 第十二章 : 动态内存之动态内存管理(new和delete)

    C++语言定义了两个运算符来分配和释放动态内存:运算符new分配内存,运算符delete释放new分配的内存. 运算符new和delete 使用new动态分配和初始化对象 在自由空间分配的内存是无名的 ...

  3. JSON日期格式处理

    protected static SerializeConfig mapping = new SerializeConfig(); private static String dateFormat; ...

  4. tyvj1015 - 公路乘车 ——完全背包

    题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1015 完全背包 #include <cstdio> #include <algorit ...

  5. leetcode 149. Max Points on a Line --------- java

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

  6. WinMain初始化详细过程以及消息循环

    主要内容:详细介绍WinMain函数的初始化过程以及消息循环 1.窗口类定义 通过给窗口类数据结构WNDCLASS赋值完成, 该数据结构中包含窗口类的各种属性 <1>LoadIcon 作用 ...

  7. Json学习篇

      JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行 ...

  8. C++ const使用详解

    1.const常量和宏常量const int max=100;#define max 100;const常量相对宏常量有两个有点:1)有类型安全检查2)占用内存空间少 2.const变量在内存中的位置 ...

  9. SQL Server中数据库文件的存放方式,文件和文件组

    原文地址:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html   SQL Server中数据库文件的存放方式,文件和文件组 ...

  10. linux工具之dracut

    这是一个工具类,不是一个后台服务类 centos7.2-minimal就下面三个包 [root@1st-kvm ~]# rpm -qa|grep dracutdracut-config-rescue- ...