因为在学红黑树的时候用到了Comparable接口,故此学习一下
public interface Comparable<T>
当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法:
int compareTo(T o)
在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。
返回值及比较规则:
1、返回负值---->小于
2、返回零------>等于
3、返回正值---->大于
例子:
定义实现Comparable接口的类
测试程序:
运行结果:
test5 28 1900
test1 25 2000
test3 26 2100
test2 24 2100
test4 27 2200
由运行结果可看出,工资由低到高进行排序,工资相同的情况下(test2和test3)年龄由高到低进行排序
public interface Comparable<T>
当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法:
int compareTo(T o)
在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。
返回值及比较规则:
1、返回负值---->小于
2、返回零------>等于
3、返回正值---->大于
例子:
定义实现Comparable接口的类
//定义一个类,并实现comparable接口 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 ComparableDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub 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()方法进行排序 Arrays.sort(workers); for(Worker w : workers){ System.out.println(w); } } }
运行结果:
test5 28 1900
test1 25 2000
test3 26 2100
test2 24 2100
test4 27 2200
由运行结果可看出,工资由低到高进行排序,工资相同的情况下(test2和test3)年龄由高到低进行排序
发表评论
-
文件上传 下载 解析 相对路径
2014-12-16 16:29 2104有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着, ... -
发送邮件
2014-10-15 11:29 667import org.apache.commons.m ... -
Enum用法
2014-08-06 10:27 811以前的时候知道enum,但 ... -
红黑树
2014-07-24 13:51 627红黑树 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的 ... -
Java中的instanceof关键字
2014-07-21 11:14 443Java中的instanceof关键字 [size=larg ... -
二叉查找树
2014-07-15 10:57 605二叉排序树(Binary Sort Tree)又称二叉查找树( ... -
二叉树的三种遍历
2014-07-10 11:28 611前序遍历(DLR) 前序 ... -
Java中如何写代码实现无标题无边框的窗体能够用鼠标拖动改变窗口大小
2014-01-23 17:16 1561import java.awt.*; import java ... -
Swing基础
2014-01-10 10:22 421JFrame: frame = new JFrame(); ... -
游戏音效素材大全下载 - 3000首高清无损-按分类整理
2014-01-09 18:03 487因为我看到国外很多素材,但是国内不多,我希望来做好这个事情。 ... -
Swing 键盘练习
2014-01-09 17:59 591在swing界面中写一个键盘,使用前记得放置背景图片 imp ... -
JAVA的Socket的聊天器
2014-01-09 11:06 470这是刚开始学习java网络编程的时候做的一个东东,,局域网聊天 ... -
驱动打印
2013-12-27 15:16 654java驱动打印代码: PrintTest.print(pr ... -
java程序打包
2013-12-27 15:17 522打包一般分为两种,一种是B/S架构打包,一种是C/S打包,大同 ... -
读取文件夹下的所有文件
2013-12-20 13:19 473文章来源:http://www.blogjava.net/ba ... -
实现天气预报功能
2013-12-02 10:30 563import java.io.BufferedReader; ... -
JMF播放AVI格式的视频
2013-12-02 10:26 741public class Conver { publ ... -
JMF视频播放器
2013-12-02 10:24 1138import java.awt.BorderLayout; ...
相关推荐
Comparable 接口和 Comparator 使用示例 在 Java 编程语言中,比较和排序是非常常见的操作。Comparable 接口和 Comparator 是两种常用的比较和排序方式。在本文中,我们将通过实例代码,详细介绍 Comparable 接口和...
Comparator接口与Comparable接口的区别 Comparator接口与Comparable接口是Java语言中两个重要的接口,它们都是用于比较和排序自定义类的对象的大小的。虽然它们两个都是用于比较的接口,但是它们有着不同的实现方式...
java通过Comparable接口实现字符串比较大小排序的简单实例
这里我们将深入探讨Java 8 HashMap如何与Comparable接口结合使用,以及这背后的编程技术和设计原理。 首先,我们了解下Comparable接口。Comparable接口是Java中用于定义对象之间自然顺序的接口,它只有一个方法`...
1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort ...
Java 实现 Comparable 接口排序,升序、降序、倒叙 Java 中的 Comparable 接口是一个非常重要的接口,它提供了一种排序的机制,允许开发者自定义对象的排序规则。在 Java 中,实现 Comparable 接口的类可以使用 ...
首先,Comparable接口是一个排序接口,它定义了一个单一的方法`compareTo(T o)`,使得实现了Comparable接口的类的对象能够进行自然排序。这意味着如果你有一个实现了Comparable接口的对象列表(如List),你可以直接...
Comparable 接口是 Java 中的一个接口,它定义了一个compareTo 方法,该方法用于比较两个对象的大小。该接口通常用于实现自定义排序的需求。 在我们的示例中,我们定义了一个 Student 类,该类实现了 Comparable ...
创建名为ComparableCircle的类,它继承自Circle类,并实现Comparable接口。画出UML图并实现compareTo方法,使其根据面积比较两个圆。编写一个测试程序求出ComparableCircle对象的两个实例中的较大者。
Java中的比较器主要涉及到两种接口:Comparable接口和Comparator接口,它们在处理对象排序时起着关键作用。 **Comparable接口** Comparable接口是Java.lang包下的一个接口,它只有一个方法:compareTo(T o)。当一个...
Comparable接口是Java中用于对象排序的关键接口,它允许类的对象之间进行比较,并定义它们的自然排序。这个接口只有一个方法:`compareTo(Object o)`,此方法用于比较当前对象与指定对象`o`的顺序。如果当前对象小于...
本课程重点讲解了`TreeSet`如何实现`Comparable`接口以及如何自定义比较规则。 首先,我们来了解`TreeSet`的基本概念。`TreeSet`内部使用红黑树数据结构存储元素,这使得它的插入、删除和查找操作具有较高的效率,...
Comparable接口和Comparator接口是Java中用于排序的关键组件,它们在数据结构如数组、集合和映射的排序过程中扮演着重要角色。接下来我们将深入探讨这两个接口的特性、用途以及它们之间的区别。 1. Comparable接口...
值得注意的是,Comparable接口的排序是全局的,也就是说,所有实现了Comparable接口的对象都将遵循同一个排序规则。而Comparator接口的排序是局部的,即在每个特定的排序操作中,可以根据需要创建不同的Comparator...
#### 二、Comparable接口解析 ##### 1. 概念介绍 `Comparable`接口位于`java.lang`包中,它定义了一个单一的方法`compareTo`。这个接口适用于那些具有自然顺序的对象。当一个类实现了`Comparable`接口时,意味着它...
Comparable接口来源于java.lang包,它定义了一个方法`compareTo(T o)`。任何类如果实现了Comparable接口,就表明这个类的对象可以相互比较大小。例如,Java中的String、Integer等类都实现了Comparable接口,这使得...
**Comparable接口** Comparable接口位于`java.lang`包下,它是一个对象自比较的接口。任何类如果需要进行排序,可以实现Comparable接口。例如,String、Integer等内置类已经实现了Comparable接口,可以方便地进行...
#### 二、Comparable接口详解 `Comparable`接口是一种内置的比较机制,它允许一个类能够自我比较,即一个类自己实现了如何与其他同类型的对象进行比较的方法。当我们希望一个类能够按照某种规则进行排序时,就可以让...
当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList sortedlist = new SortedList(comparator); ...