`
DanielHan
  • 浏览: 54475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
074641d7-eb86-343f-a745-65a0f693edb5
设计模式
浏览量:7144
社区版块
存档分类
最新评论

Java源码-Comparable

阅读更多
当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法:int compareTo(T o)
在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。

返回值及比较规则:
1、返回负值---->小于
2、返回零------>等于
3、返回正值---->大于

例子:
public class Worker implements Comparable<Worker>{
	private String name;  
    private int age;  
    private int salary;  
      
    public Worker(String name, int age, int salary) {  
        super();  
        this.name = name;  
        this.age = age;  
        this.salary = salary;  
    }     
  
    public String getName() {  
        return name;  
    }  
      
    public int getAge() {  
        return age;  
    }  
  
    public int getSalary() {  
        return salary;  
    }  
  
    /** 
     *实现Comparable接口的compareTo方法,在此方法中定义自己的比较规则 
     * 首先按工资有由低到高排序,过工资相同则按年龄由高到底排序 
     */  
    @Override  
    public int compareTo(Worker other) {  
        // TODO Auto-generated method stub  
        if(this.salary < other.getSalary()){     //工资小于其他人时返回负值  
            return -1;  
        }else if(this.salary > other.getSalary()){   //工资大于其他人时返回正值  
            return 1;  
        }else{                                      //工资等于其他人时按照年龄再排序  
            if(this.age < other.getAge()){  
                return 1;//表示由高到低排序  
            }else if(this.age >= other.getAge()){  
                return -1;  
            }  
        }  
        return 0;         
    }  
      
    @Override  
    public String toString() {  
        // TODO Auto-generated method stub  
        return this.name +"\t" + this.age + "\t" + this.salary;  
    }
}


测试
public class Demo {
	public static void main(String[] args) {
		 Worker [] workers = new Worker[5];  
	        workers[0] = new Worker("test1",25,2000);  
	        workers[1] = new Worker("test2",24,2100);  
	        workers[2] = new Worker("test3",26,2100);  
	        workers[3] = new Worker("test4",27,2200);  
	        workers[4] = new Worker("test5",28,1900);  
	          
	        //调用Arrays.sort()方法进行排序  
	        [color=red]Arrays.sort(workers);[/color]  
	        for(Worker w : workers){  
	            System.out.println(w);  
	        }
	}
}


测试结果
test5	28	1900
test1	25	2000
test3	26	2100
test2	24	2100
test4	27	2200
分享到:
评论

相关推荐

    java8stream源码-java8-cert:一些用于练习Java8OCP的代码

    java8流源码java8-证书 一些用于 Java 8 OCP / Java SE 8 Programmer (1Z0-809) 练习的代码。 150 分钟(2.5 小时),85 道题,65% 通过。 热点话题 拉姆达 流 文件IO 蔚来 泛型 集合API 文件 IO (Writer, Reader, ....

    javawiki源码-java_source_cn:Java1.8源码学习,详情见Wiki

    Java源码学习3:java.lang.Comparable接口和java.util.Comparator接口 考虑到所有Number类的派生类都实现了Comparable接口,故而优先学习Comparable接口。 Comparable接口和Comparator接口是相似接口,需要对比下。

    Java数据结构--13.Java8数据结构TreeSet.pdf

    Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...

    java8stream源码-java8:Java8特性

    java8流源码Java 8 Java 8 特性以及如何使用新特性。 java 8 对可怜的眼睛来说是不是不那么痛苦了....让我们看看新事物的味道如何,还是只是旧瓶中的新酒! 默认方法 实验包含在包 java8.defaultmethods 中 Java 8 ...

    java实现别踩白块儿源码-SortedList:用Java编写的SortedList的实现。可以与实现Comparable接口的对象一起使用

    java实现别踩白块儿源码SortedList Sorted List的实现,它扩展了ArrayList。 它是使用Comparator对象构造的,该对象可以将两个对象进行比较,从而使SortedList可以将其元素按升序或降序排序。 当且仅当要使用的对象...

    Java经典编程源码基础例程300.zip

    Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 ...

    java集合类演示源码

    实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户使用,Java平台还提供了Collections和Arrays工具类。collection.rar分别对上述内容进行详细讲解演示。

    leetcode下载-Java:Java

    Comparable 和 Comparator的区别 List Map 高并发与多线程 JVM 类加载器 JVM 监控 性能调优 常用参数 调优案例 设计模式 框架 Spring 基础 实例 源码分析 Spring MVC Spring Boot MyBatis 基础 MyBatis Plus 数据库 ...

    java中Comparable和Comparator的区别

    NULL 博文链接:https://hellogava.iteye.com/blog/1570101

    经典飞机大战java源码

    主角子弹与敌人碰撞检测原理,用户的信息采用属性文件方式存储,利用输入输出流对属性文件的读和写过程,充当增删改查的过程,排行榜采用用户的分数从高到低排列,用户实体类实现Comparable接口即可,在调用处,...

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

    NULL 博文链接:https://gghaomm.iteye.com/blog/1753970

    Java String 源码解析

    implements java.io.Serializable, Comparable, CharSequence { /** 该值用于字符存储. */ private final char value[]; 2.String源码中有哪些重要的构造方法? 答:4个重要的构造方法,源码如下 (1). public ...

    Java服务器端开发面试.doc

    涉及到各种效率问题等,里面最好阅读一下源码 集合的遍历方法和使用iterator来遍历的区别,集合可否修改,能否删除其中的一 个元素,然后size是否变化等等问题 JAVA垃圾回收,内存结构 异常的种类 Object类,哪些...

    java排序源码

    排序算法,基于compare,comparable接口的使用,使用collection下的sort方法对读取的文件中的内容进行排序,并去重,很不错的简单小程序,谢谢下载

    史上最全的Java面试题集锦.pdf

    java知识点 Hashmap 源码级掌握,扩容,红⿊树,最⼩树化容量,hash冲突解决,有些⾯试官会提出发⾃灵魂的审问,⽐如为什么是红⿊树, 别的树不可以吗;为什么8的时候树化,4不可以吗,等等 concureentHashMap,段锁...

    CollectionDemo

    CollectionDemo ##关于学习 ###多用 Google,少用某度;多用英文搜索,少用中文。 ###代码不能停留在看的阶段,要多运行,多调试。 这里面包含 Java 集合的一些学习程序;...Java : Comparable vs Comparator What

    Java源代码:抽象类和接口

    内容索引:Java源码,初学实例,抽象 抽象类和接口的Java相关源代码,包括大家喜欢的日历类Calendar和公历类GregorianCalendar,通过这些源代码可学习接口、声明类以实现Comparable接口、创建自定义接口、将基本数据...

    Java String不可变

    implements java.io.Serializable, Comparable, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int ha

    Guava 16.0 API (CHM格式)

     源码包的简单说明:  com.google.common.annotations:普通注解类型。  com.google.common.base:基本工具类库和接口。  com.google.common.cache:缓存工具包,非常简单易用且功能强大的JVM内缓存。  ...

    (String)字符串原理详解

    implements java.io.Serializable, Comparable, CharSequence { //存储字符串的字符数组 private final char value[]; //字符串的hash值 用来标记字符的唯一性 private int hash; // Default to 0 } 从源码中...

Global site tag (gtag.js) - Google Analytics