当前位置:首页 > 开发 > 编程语言 > Java > 正文

java.lang.Comparable 接口的作用

发表于: 2011-07-02   作者:borglee   来源:转载   浏览次数:
摘要: 在开发中,我们可能会遇到需要将一些对象有序的放入到集合中,这时候我们只需要让类实现java.lang.Comparable<T>接口,并覆盖 compareTo这个方法即可实现自动排序。下面给出例子,一个类Student类,一个测试类TestComparable,下面给出代码: Studnet类: public class Student implements Comp
在开发中,我们可能会遇到需要将一些对象有序的放入到集合中,这时候我们只需要让类实现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是无效的哦!

感谢您的光临,有什么不对的地方还请高手指出!谢谢!

java.lang.Comparable 接口的作用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1、C#接口的作用 : C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面
先看一下BeanFactory接口的三个子接口: 还是很清楚的 ListableBeanFactory:提供访问容器中bean基本
先看一下BeanFactory接口的三个子接口: 还是很清楚的 ListableBeanFactory:提供访问容器中bean基本
最近在做一些AS3项目,有两大问题让我感觉比较头痛的。一是垃圾回收器。由于AS3垃圾回收机制跟AS2有
在用"三层架构"思想做机房收费系统的时候,感觉最经典的三层架构图就是下面这个图了。 你有没有发现
6 接口
构ASP.NET程序----接口 看过前一篇博文http://www.cnblogs.com/insus/archive/2013/04/21/3029483.h
什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的
HTML5开发手机应用--viewport的作用   在用HTML5开发手机应用或手机网页时,<head>部分总会
Java 对象 Hashcode 的作用是什么?可以联想数据结构的哈希表(散列表)、哈希函数。Object.hashCode(
Java 对象 Hashcode 的作用是什么?可以联想数据结构的哈希表(散列表)、哈希函数。Object.hashCode(
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号