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

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
分享到:
评论

相关推荐

    collectionJava源码-Edureka-Java-Assignment:作为Edureka的Amdocs课程一部分提交的Java源代

    在本项目"collectionJava源码-Edureka-Java-Assignment"中,我们主要关注的是Java集合框架的源代码分析,这是在Edureka的Amdocs课程中作为学习任务提交的。这个压缩包"Edureka-Java-Assignment-master"很可能包含了...

    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, ....

    collectionJava源码-Intro-to-Java-101:这是我在教授Java语言时使用的代码的集合。对源代码进行了注释,以解释每

    这个集合Java源码集合,"Intro-to-Java-101",是专为初学者设计的,旨在通过注释丰富的源代码来教授Java语言的基础知识。下面将详细讨论Java集合框架的基本概念和常用类,以及如何通过注释理解代码。 首先,Java...

    java-GenericSort-源码.rar

    本篇将深入解析Java泛型排序的源码,理解其背后的工作原理。 1. **泛型的概念与作用** 泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时使用类型参数,从而提高了代码的灵活性和安全性。通过泛型,...

    java源码分析

    在分析Java源码时,我们通常关注的是Java标准库中的核心类与方法,因为这些组件是Java编程语言的基础。从给定的文件片段中,我们可以提取出关于Java中Object类和String类的源码分析的知识点。 首先,Object类是Java...

    java排序Comparator和Comparable

    在实际开发中,`Comparable`常用于定义类的自然排序逻辑,而`Comparator`则更多地用于定制排序或者在多线程环境中,避免修改原始类的源码。 总结一下,`Comparable`和`Comparator`都是Java中实现排序的重要手段。`...

    fp-tree java源码

    ### FP-Tree算法详解及其Java源码实现 在数据挖掘领域,尤其是关联规则挖掘中,寻找频繁模式是一项核心任务。传统的Apriori算法虽然有效,但因需多次扫描数据库而存在效率瓶颈。针对这一问题,韩嘉炜教授提出的FP-...

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

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

    Java源码分析:集合-容器.pdf

    如果需要对自定义对象进行排序,则要求该对象必须实现Comparable接口,并且正确覆写compareTo方法。LinkedHashSet是HashSet的一个子类,它维护了一个链表记录插入元素的顺序,因此在遍历时能保持元素的添加顺序。 ...

    Collections源码java-Java-Collection-:对Java的Collection框架源码阅读

    深入阅读`Collections`源码,我们可以看到这些方法是如何利用Java集合框架的底层实现来提供高效且功能丰富的服务的。比如,`sort()`方法的实现依赖于`Comparable`接口或`Comparator`接口,而`binarySearch()`则需要...

    Java源码查看枚举类型定义.rar

    本资源"Java源码查看枚举类型定义.rar"包含了关于Java枚举类型的详细解释和实例,旨在帮助开发者深入理解这一特性。 首先,枚举类型在Java中通过关键字`enum`声明。例如: ```java public enum Color { RED, ...

    javajdk源码-jdk8-base-source-code:jdk8中的java.base的源码学习

    在Java开发领域,深入理解JDK源码是提升编程技能的关键步骤。本资源"javajdk源码-jdk8-base-source-code"聚焦于JDK8中的"java.base"模块,这是Java平台标准版(Java SE)的基础部分,包含了大量核心类库。下面将详细...

    java.util源码-Java-utils:各种实用Java源代码

    6. **Comparator与Comparable**:Comparable接口定义了自然排序,对象自身可以比较。Comparator接口则允许外部类来定义排序规则,提供更大的灵活性。 7. **Collections工具类**:提供了一系列静态方法,用于操作...

    java源码解读-JavaAPI:jdk源码解读分析

    深入理解Java API的源码对于提升编程技能、优化代码性能以及解决复杂问题至关重要。本篇文章将对Java API的部分关键组件进行源码解读,帮助读者深入理解其工作原理。 1. **对象创建与内存管理**: - `Object`类:...

    javabiginteger源码-universal-binary-json-java:通用二进制JSONJava库

    在源码中,我们可以看到BigInteger通过扩展AbstractNumber类,实现了Comparable接口,保证了其与其他数值类型之间的比较和排序功能。理解BigInteger的构造函数、toString()方法以及其核心的add()、subtract()、...

    java中Comparable和Comparator的区别

    在Java编程语言中,Comparable和Comparator接口是两个重要的概念,它们都用于对象的排序,但有着不同的使用场景和特点。本文将深入探讨这两个接口的区别,以及它们在实际开发中的应用。 首先,我们来了解一下...

    thinkinjava4源码-Thinking-In-Java4e:java编程思想第4版

    在源码中,你会看到ArrayList、LinkedList、HashSet、HashMap等各种集合类的使用示例,以及迭代器、泛型和Comparable接口的应用。 3. **异常处理**:Java异常处理机制是其健壮性的重要保障。源码中会有try-catch-...

    28个java常用的工具类源码

    这里我们关注的是28个常用的Java工具类源码,它们涵盖了数据处理、字符串操作、集合操作等多个方面。了解并深入学习这些工具类的源码,对于提升编程技能、理解Java内部机制以及优化代码性能有着巨大的帮助。 首先,...

    java8stream源码-java8:Java8特性

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

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

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

Global site tag (gtag.js) - Google Analytics