1、原则

Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)

 import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; public class UserComparator implements Comparator < User > { public static void main( String[] args ) {
List < User > users = new ArrayList < User >();
users.add( new User( 10, "a" ) );
users.add( new User( 11, "d" ) );
users.add( new User( 15, "s" ) );
users.add( new User( 6, "x" ) );
users.add( new User( 17, "a" ) );
users.add( new User( 17, "b" ) );
users.add( new User( 17, "c" ) );
users.add( new User( 17, "d" ) );
UserComparator comparator = new UserComparator(); users.sort( comparator );
// 也可以使用:Collections.sort( users, comparator ); for ( User u : users ) {
System.out.println( u );
}
} @Override
public int compare( User u1, User u2 ) {
if ( u1.equals( u2 ) ) {
return 0;
}
else if ( u1.getAge() < u2.getAge() ) {
return 1;
}
else if ( u1.getAge() == u2.getAge() ) {
int f = u1.getName().compareTo( u2.getName() );
if ( f < 0 ) {
return -1;
}
return 0;
}
else {
return -1;
}
}
} class User {
private int age;
private String name; public User() { } public User( int age, String name ) {
this.age = age;
this.name = name;
} public int getAge() {
return age;
} public void setAge( int age ) {
this.age = age;
} public String getName() {
return name;
} public void setName( String name ) {
this.name = name;
} @Override
public String toString() {
return "User [age=" + age + ", name=" + name + "]";
} }
User [age=17, name=a]
User [age=17, name=b]
User [age=17, name=c]
User [age=17, name=d]
User [age=15, name=s]
User [age=11, name=d]
User [age=10, name=a]
User [age=6, name=x]

JAVA 使用Comparator接口实现自定义排序的更多相关文章

  1. java利用Comparator接口对自定义数组排序

    import java.util.Arrays; import java.util.Comparator; public class MySort { public static void main( ...

  2. 我的Java开发学习之旅------>Java利用Comparator接口对多个排序条件进行处理

    一需求 二实现Comparator接口 三验证排序结果 验证第一条件首先按级别排序级别最高的排在前面 验证第二条如果级别相等那么按工资排序工资高的排在前面 验证第三条如果工资相当则按入职年数排序入职时 ...

  3. Java中 Comparator接口 与Comparable 的区别

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt159 comparator接口与Comparable接口的区别 1. Com ...

  4. Java.lang.Comparable接口和Java.util.Comparator接口的区别

    Java的Comparator和Comparable当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 1.Com ...

  5. java lang(Comparable接口) 和java util(Comparator接口)分析比较

    //Comparable 接口强行对实现它的每个类的对象进行整体排序. -- 自然排序.类的compareTo称为自然比较方法. public interface Comparable<T> ...

  6. Java:Comparator接口

    public interface Comparator<T> 接口里面的方法 int compare(T o1, T o2) o1 > o2 返回 1 o1 = o2 返回 0 o1 ...

  7. Java中Comparator接口和Comparable接口的使用

    普通情况下在实现对对象元素的数组或集合进行排序的时候会用到Comparator和Comparable接口,通过在元素所在的类中实现这两个接口中的一个.然后对数组或集合调用Arrays.sort或者Co ...

  8. java基础-Comparator接口与Collections实现排序算法

    java 排序Comparable和Comparator使用 java提供了两个排序用的接口Comparable和Comparator,一般情况下使用区别如下: Comparable 接口用于类的固定 ...

  9. java中实现Comparable接口实现自定义排序

    class Student implements Comparable{ String name; int gpa; @Override public int compareTo(Object arg ...

随机推荐

  1. Android学习——文件存储

    在Andriod开发中,文件存储和Java的文件存储类似.但需要注意的是,为了防止产生碎片垃圾,在创建文件时,要尽量使用系统给出的函数进行创建,这样当APP被卸载后,系统可以将这些文件统一删除掉.获取 ...

  2. 【Leetcode】【Medium】Binary Tree Inorder Traversal

    Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...

  3. Retrofit-入门使用

    1. 在模块目录下的build.gradle dependencies { compile "com.squareup.retrofit2:retrofit:2.1.0" comp ...

  4. 启动入口Start.java分析

    框架的启动器在包:org.ofbiz.base.start 入口为:Start.java的main方法 Start.java启动器内容: 步骤 详情 入参校验 help/status/shutdown ...

  5. .C#认证考试试题汇编:第一单元:1,11 第二单元:1,11

    第一单元1,11 好久没用异或都快忘了,就让我们一起来了解哈啥子事异或 说的这个,就不经意让我想起书上的几种交换值得方法了 我这儿说的交换的方法是,不使用第三个变量来交换,而是两个 实现条件是C a= ...

  6. 一个较复杂的执行redis的lue脚本

  7. 跳舞玩偶Doll正式上线

    有问题或者建议大家可以联系我的QQ 914287516 或者qq邮箱 官方qq群 325631077:

  8. ZT SAFE_DELETE

    SAFE_DELETE 分类: c/C++ 2008-10-14 14:26 706人阅读 评论(2) 收藏 举报 delete文本编辑nullflash破解加密 我发现学程序大家差不多都有相似的地方 ...

  9. sql语句中where,have,on的区别

    一.where和on的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户.  在使用left jion时,on和where条件的区别如下:   1. ...

  10. mybatis实现最简单的增删改查

    1.数据库设计 2.项目结构(针对User不用管Blogger) User.java package com.yunqing.mybatis.bean; public class User { pri ...