首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-11-15 
java.lang.ComparableT 接口的作用在开发中,我们可能会遇到需要将一些对象有序的放入到集合中,这时候我

java.lang.Comparable<T> 接口的作用
在开发中,我们可能会遇到需要将一些对象有序的放入到集合中,这时候我们只需要让类实现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

热点排行