当需要对一个对象进行排序时,该对象应该实现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"中,我们主要关注的是Java集合框架的源代码分析,这是在Edureka的Amdocs课程中作为学习任务提交的。这个压缩包"Edureka-Java-Assignment-master"很可能包含了...
java8流源码java8-证书 一些用于 Java 8 OCP / Java SE 8 Programmer (1Z0-809) 练习的代码。 150 分钟(2.5 小时),85 道题,65% 通过。 热点话题 拉姆达 流 文件IO 蔚来 泛型 集合API 文件 IO (Writer, Reader, ....
这个集合Java源码集合,"Intro-to-Java-101",是专为初学者设计的,旨在通过注释丰富的源代码来教授Java语言的基础知识。下面将详细讨论Java集合框架的基本概念和常用类,以及如何通过注释理解代码。 首先,Java...
本篇将深入解析Java泛型排序的源码,理解其背后的工作原理。 1. **泛型的概念与作用** 泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时使用类型参数,从而提高了代码的灵活性和安全性。通过泛型,...
在分析Java源码时,我们通常关注的是Java标准库中的核心类与方法,因为这些组件是Java编程语言的基础。从给定的文件片段中,我们可以提取出关于Java中Object类和String类的源码分析的知识点。 首先,Object类是Java...
在实际开发中,`Comparable`常用于定义类的自然排序逻辑,而`Comparator`则更多地用于定制排序或者在多线程环境中,避免修改原始类的源码。 总结一下,`Comparable`和`Comparator`都是Java中实现排序的重要手段。`...
### FP-Tree算法详解及其Java源码实现 在数据挖掘领域,尤其是关联规则挖掘中,寻找频繁模式是一项核心任务。传统的Apriori算法虽然有效,但因需多次扫描数据库而存在效率瓶颈。针对这一问题,韩嘉炜教授提出的FP-...
Java源码学习3:java.lang.Comparable接口和java.util.Comparator接口 考虑到所有Number类的派生类都实现了Comparable接口,故而优先学习Comparable接口。 Comparable接口和Comparator接口是相似接口,需要对比下。
如果需要对自定义对象进行排序,则要求该对象必须实现Comparable接口,并且正确覆写compareTo方法。LinkedHashSet是HashSet的一个子类,它维护了一个链表记录插入元素的顺序,因此在遍历时能保持元素的添加顺序。 ...
深入阅读`Collections`源码,我们可以看到这些方法是如何利用Java集合框架的底层实现来提供高效且功能丰富的服务的。比如,`sort()`方法的实现依赖于`Comparable`接口或`Comparator`接口,而`binarySearch()`则需要...
本资源"Java源码查看枚举类型定义.rar"包含了关于Java枚举类型的详细解释和实例,旨在帮助开发者深入理解这一特性。 首先,枚举类型在Java中通过关键字`enum`声明。例如: ```java public enum Color { RED, ...
在Java开发领域,深入理解JDK源码是提升编程技能的关键步骤。本资源"javajdk源码-jdk8-base-source-code"聚焦于JDK8中的"java.base"模块,这是Java平台标准版(Java SE)的基础部分,包含了大量核心类库。下面将详细...
6. **Comparator与Comparable**:Comparable接口定义了自然排序,对象自身可以比较。Comparator接口则允许外部类来定义排序规则,提供更大的灵活性。 7. **Collections工具类**:提供了一系列静态方法,用于操作...
深入理解Java API的源码对于提升编程技能、优化代码性能以及解决复杂问题至关重要。本篇文章将对Java API的部分关键组件进行源码解读,帮助读者深入理解其工作原理。 1. **对象创建与内存管理**: - `Object`类:...
在源码中,我们可以看到BigInteger通过扩展AbstractNumber类,实现了Comparable接口,保证了其与其他数值类型之间的比较和排序功能。理解BigInteger的构造函数、toString()方法以及其核心的add()、subtract()、...
在Java编程语言中,Comparable和Comparator接口是两个重要的概念,它们都用于对象的排序,但有着不同的使用场景和特点。本文将深入探讨这两个接口的区别,以及它们在实际开发中的应用。 首先,我们来了解一下...
在源码中,你会看到ArrayList、LinkedList、HashSet、HashMap等各种集合类的使用示例,以及迭代器、泛型和Comparable接口的应用。 3. **异常处理**:Java异常处理机制是其健壮性的重要保障。源码中会有try-catch-...
这里我们关注的是28个常用的Java工具类源码,它们涵盖了数据处理、字符串操作、集合操作等多个方面。了解并深入学习这些工具类的源码,对于提升编程技能、理解Java内部机制以及优化代码性能有着巨大的帮助。 首先,...
java8流源码Java 8 Java 8 特性以及如何使用新特性。 java 8 对可怜的眼睛来说是不是不那么痛苦了....让我们看看新事物的味道如何,还是只是旧瓶中的新酒! 默认方法 实验包含在包 java8.defaultmethods 中 Java 8 ...
Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 ...