当需要对一个对象进行排序时,该对象应该实现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
分享到:
相关推荐
java8流源码java8-证书 一些用于 Java 8 OCP / Java SE 8 Programmer (1Z0-809) 练习的代码。 150 分钟(2.5 小时),85 道题,65% 通过。 热点话题 拉姆达 流 文件IO 蔚来 泛型 集合API 文件 IO (Writer, Reader, ....
Java源码学习3:java.lang.Comparable接口和java.util.Comparator接口 考虑到所有Number类的派生类都实现了Comparable接口,故而优先学习Comparable接口。 Comparable接口和Comparator接口是相似接口,需要对比下。
Java数据结构--13.Java8数据结构TreeSet 前⾔ ,上⼀篇中对 Set 接⼝最终实现类 HashSet 与 LinkedHashSet 做了介绍与分析,本篇将对另⼀种 Set 接⼝的最终实现类 TreeSet 进⾏ 介绍与分析。 先来看下 TreeSet 完整...
java8流源码Java 8 Java 8 特性以及如何使用新特性。 java 8 对可怜的眼睛来说是不是不那么痛苦了....让我们看看新事物的味道如何,还是只是旧瓶中的新酒! 默认方法 实验包含在包 java8.defaultmethods 中 Java 8 ...
java实现别踩白块儿源码SortedList Sorted List的实现,它扩展了ArrayList。 它是使用Comparator对象构造的,该对象可以将两个对象进行比较,从而使SortedList可以将其元素按升序或降序排序。 当且仅当要使用的对象...
Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 ...
实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户使用,Java平台还提供了Collections和Arrays工具类。collection.rar分别对上述内容进行详细讲解演示。
Comparable 和 Comparator的区别 List Map 高并发与多线程 JVM 类加载器 JVM 监控 性能调优 常用参数 调优案例 设计模式 框架 Spring 基础 实例 源码分析 Spring MVC Spring Boot MyBatis 基础 MyBatis Plus 数据库 ...
NULL 博文链接:https://hellogava.iteye.com/blog/1570101
主角子弹与敌人碰撞检测原理,用户的信息采用属性文件方式存储,利用输入输出流对属性文件的读和写过程,充当增删改查的过程,排行榜采用用户的分数从高到低排列,用户实体类实现Comparable接口即可,在调用处,...
NULL 博文链接:https://gghaomm.iteye.com/blog/1753970
implements java.io.Serializable, Comparable, CharSequence { /** 该值用于字符存储. */ private final char value[]; 2.String源码中有哪些重要的构造方法? 答:4个重要的构造方法,源码如下 (1). public ...
涉及到各种效率问题等,里面最好阅读一下源码 集合的遍历方法和使用iterator来遍历的区别,集合可否修改,能否删除其中的一 个元素,然后size是否变化等等问题 JAVA垃圾回收,内存结构 异常的种类 Object类,哪些...
排序算法,基于compare,comparable接口的使用,使用collection下的sort方法对读取的文件中的内容进行排序,并去重,很不错的简单小程序,谢谢下载
java知识点 Hashmap 源码级掌握,扩容,红⿊树,最⼩树化容量,hash冲突解决,有些⾯试官会提出发⾃灵魂的审问,⽐如为什么是红⿊树, 别的树不可以吗;为什么8的时候树化,4不可以吗,等等 concureentHashMap,段锁...
CollectionDemo ##关于学习 ###多用 Google,少用某度;多用英文搜索,少用中文。 ###代码不能停留在看的阶段,要多运行,多调试。 这里面包含 Java 集合的一些学习程序;...Java : Comparable vs Comparator What
内容索引:Java源码,初学实例,抽象 抽象类和接口的Java相关源代码,包括大家喜欢的日历类Calendar和公历类GregorianCalendar,通过这些源代码可学习接口、声明类以实现Comparable接口、创建自定义接口、将基本数据...
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
源码包的简单说明: com.google.common.annotations:普通注解类型。 com.google.common.base:基本工具类库和接口。 com.google.common.cache:缓存工具包,非常简单易用且功能强大的JVM内缓存。 ...
implements java.io.Serializable, Comparable, CharSequence { //存储字符串的字符数组 private final char value[]; //字符串的hash值 用来标记字符的唯一性 private int hash; // Default to 0 } 从源码中...