`
borglee
  • 浏览: 134620 次
  • 性别: 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

相关推荐

    Java中Comparable和Comparator 2种实现方式学习

    首先,`Comparable`接口位于`java.lang`包下,它定义了一个`compareTo()`方法,用于比较当前对象与另一个对象的大小。任何类如果需要自定义排序规则,只需实现这个接口并重写`compareTo()`方法。例如,`String`、`...

    Java SE编程入门教程 java泛型(共11页).pptx

    3. 泛型接口:接口也可以定义为泛型,例如`TestGenerics&lt;T&gt;`,其中`T`是类型参数。 此外,教程还涉及到其他关键Java SE概念,包括: - `java.lang.Object`:所有类的基类,提供了`equals()`、`hashCode()`等基本...

    java中Comparable和Comparator的区别

    Comparable接口位于java.lang包中,它只有一个方法:compareTo(Object o)。任何实现了Comparable接口的类,其实例都可以进行自然排序。自然排序指的是根据类的业务逻辑定义的排序规则。例如,String类就实现了...

    Comparable.pdf

    例如,如果你有一个`Person`类,你可以让它实现`Comparable&lt;Person&gt;`接口,然后重写`compareTo(Person t)`方法。这个方法返回一个整数值,表示当前对象与传入对象的相对大小: ```java public class Person ...

    String类下compareTo()与compare()方法比较

    首先,compareTo()方法是Java.lang.Comparable&lt;T&gt;接口中的方法,该方法用于比较两个对象的大小。当需要对某个类的对象进行排序时,该类需要实现Comparable&lt;T&gt;接口的,并且必须重写public int compareTo(T o)方法。...

    Java核心API需要掌握的程度

    2. **Boolean**:提供了布尔类型的封装,实现`Comparable&lt;T&gt;`和`Serializable`接口。 3. **Character**:提供了字符类型的操作,同样实现了`Comparable&lt;T&gt;`和`Serializable`接口。 4. **Class**:表示类的信息,可以...

    492.490.JAVA基础教程_常用类-自定义类实现Comparable自然排序(492).rar

    `Comparable`接口位于`java.lang`包中,它只有一个方法`compareTo(T o)`,用于比较当前对象与指定对象的大小关系。 **Comparable接口** `Comparable`接口是为那些需要比较的对象设计的。当你创建一个类,并希望它...

    Java对象的比较方式.doc

    首先,`Comparable`接口是Java的`java.lang`包中的一个基础接口,它的目的是为那些具有自然排序顺序的类提供一种排序机制。例如,`String`和`Integer`类都实现了`Comparable`接口,因此我们可以直接比较字符串或整数...

    java排序Comparator和Comparable

    首先,`Comparable`接口是Java.lang包下的一个接口,它只有一个方法`compareTo(T o)`。任何类如果想要实现自然排序,即按照类定义的规则进行排序,都可以实现这个接口。例如,`String`类就实现了`Comparable`接口,...

    通过接口排序

    首先,`Comparable`接口位于`java.lang`包下,它只有一个方法`compareTo(T o)`。当你有一个自定义类型的数据类,并且希望在集合(如ArrayList、LinkedList或TreeSet等)中进行自然排序时,你需要让这个类实现`...

    Java中Comparable和Comparator的区别

    Comparable接口来源于java.lang包,它定义了一个方法`compareTo(T o)`。任何类如果实现了Comparable接口,就表明这个类的对象可以相互比较大小。例如,Java中的String、Integer等类都实现了Comparable接口,这使得...

    详解Java中Comparable和Comparator接口的区别

    public interface Comparable&lt;T&gt; { public int compareTo(T o); } ``` compareTo 函数用来比较两个对象的大小,返回负数意味着第一个对象小于第二个对象,返回零意味着两个对象相等,返回正数意味着第一个对象大于...

    java比较器Comparable接口与Comaprator接口的深入分析

    Comparable接口是Java.lang包下的一个接口,它只有一个方法:compareTo(T o)。当一个类实现了Comparable接口,就意味着该类的实例可以相互比较,并且能够明确它们之间的顺序。compareTo方法用于定义类实例间的比较...

    JavaAPI文档

    例如,`Comparable&lt;T&gt;`接口定义了一个比较方法,使得任何实现了这个接口的类的对象可以相互比较。 4. **枚举(Enums)**:枚举类型是一种特殊的类,用于定义一组预定义的常量。比如`java.util.concurrent.TimeUnit`...

    Java Comparable及Comparator接口区别详解

    Comparable 接口位于 java.lang 包下面,里面只有一个 compareTo(T) 方法。当一个类需要比较的时候,需要自行实现 Comparable 接口的 compareTo 方法。当调用集合排序方法的时候,就会调用对象的 compareTo() 方法来...

    Comparable接口和Comparator接口的比较

    Comparable接口位于java.lang包中,它定义了一个单一的方法compareTo(Object o),用于比较当前对象与指定对象的顺序。当一个类实现Comparable接口时,表示该类的实例可以自然排序。例如,Java中的String和Integer类...

    nice java material

    - **定义**:实现 `Comparable&lt;T&gt;` 和 `Cloneable` 接口可以让类具备克隆和比较的能力。 - **示例**: ```java public class MyClass implements Comparable&lt;MyClass&gt;, Cloneable { private int value; public ...

    java常用方法集合

    `Comparable&lt;T&gt;` 接口用于实现对象的自然排序,即按照某种逻辑顺序对对象进行比较。通常用于需要排序的情况,例如在 `Collections.sort()` 或 `Arrays.sort()` 方法中自动排序对象列表。 **示例代码详解**: ```...

    java常用工具类的使用

    List&lt;Integer&gt; list = new ArrayList&lt;&gt;(); list.add(12); list.add(54); list.add(12); list.add(8765); Collections.sort(list); System.out.println(Collections.binarySearch(list, 12)); ``` #### 6. `java....

Global site tag (gtag.js) - Google Analytics