`
borglee
  • 浏览: 133679 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java.lang.Comparable<T> 接口的作用

    博客分类:
  • Java
阅读更多
在开发中,我们可能会遇到需要将一些对象有序的放入到集合中,这时候我们只需要让类实现java.lang.Comparable<T>接口,并覆盖compareTo这个方法即可实现自动排序。下面给出例子,一个类Student类,一个测试类TestComparable,下面给出代码:

Studnet类:
public class Student implements Comparable{
	private int id;
	private String name;
	private int sex;
	
	public Student(int id, String name, int sex) {
	  super();
	  this.id = id;
	  this.name = name;
	  this.sex = sex;
  }
	public int getId() {
  	return id;
  }
	public void setId(int id) {
  	this.id = id;
  }
	public String getName() {
  	return name;
  }
	public void setName(String name) {
  	this.name = name;
  }
	public int getSex() {
  	return sex;
  }
	public void setSex(int sex) {
  	this.sex = sex;
  }
	
	@Override
  public int compareTo(Object o) {
		int result = 0;	//返回对比结果 0为相等,负整数为小于,正整数为大于
		if(o instanceof Student) {
			Student student = (Student)o;
			if(student.getId() > this.id) {
				return -1;
			} else if (student.getId() < this.id) {
				return 1;
			}
		}
	  return result;
  }
}


TestComparable类:
import java.util.HashMap;

public class TestComparable {
	private static HashMap<Integer, Student> studentMap;
	
	public static void main(String[] args) {
	  loadStudent();
	  for(Student student : studentMap.values()) {
	  	System.out.println("ID:" + student.getId() + "  NAME:" + student.getName() + "  SEX:" + student.getSex());
	  }
  }
	
	private static void loadStudent() {
		studentMap = new HashMap<Integer, Student>();
		//请无视我对学生的命名吧。。。。毕竟用来测试的 呵呵
		Student student0 = new Student(2, "张二", 0);
		Student student1 = new Student(4, "张四", 1);
		Student student2 = new Student(6, "张六", 1);
		Student student3 = new Student(1, "张一", 0);
		Student student4 = new Student(3, "张三", 0);
		Student student5 = new Student(8, "张八", 1);
		Student student6 = new Student(9, "张九", 0);
		Student student7 = new Student(7, "张七", 1);
		Student student8 = new Student(0, "张零", 0);
		Student student9 = new Student(5, "张五", 0);
		studentMap.put(student0.getId(), student0);
		studentMap.put(student1.getId(), student1);
		studentMap.put(student2.getId(), student2);
		studentMap.put(student3.getId(), student3);
		studentMap.put(student4.getId(), student4);
		studentMap.put(student5.getId(), student5);
		studentMap.put(student6.getId(), student6);
		studentMap.put(student7.getId(), student7);
		studentMap.put(student8.getId(), student8);
		studentMap.put(student9.getId(), student9);
		studentMap.put(student0.getId(), student0);
	}
}


打印结果:

ID:0  NAME:张零  SEX:0
ID:1  NAME:张一  SEX:0
ID:2  NAME:张二  SEX:0
ID:3  NAME:张三  SEX:0
ID:4  NAME:张四  SEX:1
ID:5  NAME:张五  SEX:0
ID:6  NAME:张六  SEX:1
ID:7  NAME:张七  SEX:1
ID:8  NAME:张八  SEX:1
ID:9  NAME:张九  SEX:0


其他无序集合也可以使用此接口,注意对于TreeMap是无效的哦!

感谢您的光临,有什么不对的地方还请高手指出!谢谢!
分享到:
评论
1 楼 BruseLee 2011-10-08  
看了好久,也敲了下来,也运行了,但是不怎么明白这个接口的用法,我想和你请教下关于这个接口的compareTo方法的一些问题好吗?谢谢  我qq  614932653

相关推荐

    rm2.6正式版本

    Report Machine 2.6&lt;br&gt;===================&lt;br&gt;&lt;br&gt;这是一个报表控件包,For Borland Delphi Versions 3,4,5,6,7.100% 源码.&lt;br&gt;&lt;br&gt;最后更新日期:2002.10.11&lt;br&gt;&lt;br&gt;目录&lt;br&gt;-----&lt;br&gt; 说明&lt;br&gt; 特点&lt;br&gt; 最后...

    java泛型总结.docx

    泛型类型:定义泛型类型时,使用尖括号&lt;&gt;,并在尖括号中指定类型参数。...例如,public static &lt;T extends Comparable&lt;T&gt;&gt; T max(T[] array)表示一个返回最大元素的泛型方法,且元素类型必须实现Comparable接口。

    深入理解Java之接口

    例如,以下是Comparable&lt;T&gt;接口的定义:  public interface Comparable&lt;T&gt; {  int compareTo(T o);  }  Comparable&lt;T&gt;接口中定义了一个compareTo方法,这个方法是它所描述的需求。若我们想调用Arrays.sort...

    AIC的Java课程1-6章

    第5 版 清华大学出版社&lt;br&gt; “SCJP学习指南” 人民邮电出版社&lt;br&gt; “Java 编程思想” 第3版 机械工业出版社&lt;br&gt; 教学内容和要求&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;Java 入门 高 中 易&lt;br&gt;变量和运算符 高 ...

    Java 基础泛型.pdf

    Java泛型概念 Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型...例如,List&lt;E&gt;就是一个泛型类,Comparable&lt;T&gt;就是一个

    java中Comparable和Comparator的区别

    java.lang.Comparable和java.util.Comparator是两个容易混淆的接口,两者都带有比较的意思,那么两个接口到底有什么区别,分别在什么情况下使用呢? Comparable Comparable是java.lang包下面的接口,lang包下面可以...

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    template&lt;&gt;,藉此告訴編譯器哪些符號是 型別參數( type parameters),如圖 8。 template &lt;typename T&gt; class Rect : public Shape 侯捷觀點 JDK 1.5的泛型實現(Generics in JDK 1.5)7 { ...

    version_compare:VersionCompare简化了版本号与其他版本号的比较

    "&lt;major&gt;.&lt;minor&gt;.&lt;tiny&gt;.&lt;patch&gt;" [ &lt; major&gt; , &lt; minor&gt; , &lt; tiny&gt; , &lt; patch&gt; ] 安装 将此行添加到应用程序的Gemfile中: gem "version_compare" 然后执行: $ bundle 或将其自己安装为: $ gem install ...

    数据结构里的一些基本代码包括线性表,树等

    AATree&lt;Comparable&gt;::AATree( const Comparable & notFound ) : ITEM_NOT_FOUND( notFound ) { nullNode = new AANode&lt;Comparable&gt;; nullNode-&gt;left = nullNode-&gt;right = nullNode; nullNode-&gt;level = 0; ...

    【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip

    【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip

    计算机后端-Java-Java核心基础-第22章 常用类 22. 自定义类实现Comparable自然排序.avi

    计算机后端-Java-Java核心基础-第22章 常用类 22. 自定义类实现Comparable自然排序.avi

    java,Comparable接口实例

    1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort ...

    #在千锋“逆战”学习第19天#接口、内部类 、排序(java.lang.Comparable)完成Student排序

    接口回调 用哥德巴赫猜想来总结,哥德巴赫猜想就是要去输入一个偶数,输出这个偶数能被分解为哪两个质数的和,具体实现...接口起到了两个作用,一是隔离,使用者和实现者中间有了接口来作为隔离,不必串行完成,可以并

    Comparable接口和Comparator接口的比较

    来自java.lang.Comparable。Comparable是 排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外...

    hamcrest-jdk8-time:用于 Java 8 新 java.time 类的 Hamcrest 匹配器

    包含的匹配器所有匹配器都是为实现Temporal和Comparable&lt;T&gt;所有内容定义的。between(start, end) 如果日期/时间介于其他两个日期/时间之间(包括 ) ,则匹配。 例如: LocalDateTime start = LocalDateTime . of( ...

    TemplateDPMerge:模板设计模式和归并排序算法的实现

    public interface Sequence&lt;T&gt; extends Iterable&lt;T&gt; { // Adds the element t at the rear of the sequence. public void add(T t); // The objects from s are added at the rear of the sequence // (in the...

    version4j:用于帮助比较major.minor.patch版本的库

    用法稳定的: &lt;dependency&gt;&lt;groupId&gt;com.kcthota&lt;/groupId&gt;&lt;artifactId&gt;version4j&lt;/artifactId&gt;&lt;version&gt;4.0&lt;/version&gt;&lt;/dependency&gt;例子解析版本尝试将字符串解析为版本对象。 如果无法解析String,则抛出...

    Java8HashMap键与Comparable接口编程开

    Java8HashMap键与Comparable接口编程开发技术共3页.pdf.zip

    数据结构实验报告 字符串.doc

    public final class MyString implements Comparable&lt;MyString&gt;, java.io.Serializable { private final char[] value; //字符数组,私有最终变量,只能赋值一次 public MyString() //构造空串"",串长度

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

    当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList&lt;Integer&gt; sortedlist = new SortedList...

Global site tag (gtag.js) - Google Analytics