Java实例对象间的比较(实现Comparable接口)

int compareTo(T o)

Compares this object with the specified object for order.  Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

class Name implements Comparable{
 private String firstName,lastName;
 public Name(String firstName,String lastName){
  this.firstName = firstName;
  this.lastName = lastName;
 }
 public String getFirstName() {
  return firstName;
 }
 
 public String getLastName() {
  return lastName;
 }
 
 public String toString(){
  return firstName+" "+lastName;
 }
 
 public boolean equals(Object obj){
  if(obj instanceof Name){
   Name name = (Name)obj;
   return (firstName.equals(name.firstName)&&
     lastName.equals(name.lastName));
  }
  return super.equals(obj);
 }
 @Override
 public int compareTo(Object o) {
  Name n = (Name)o;
  int lastCmp = lastName.compareTo(n.lastName);
  return (lastCmp!=0 ? lastCmp:firstName.compareTo(n.firstName));
 }
 
}

public static void main(String[] args) {
  List ll = new LinkedList();
  ll.add(new Name("Karl","M"));
  ll.add(new Name("Steven","Lee"));
  ll.add(new Name("John","o"));
  ll.add(new Name("Tom","M"));
  System.out.println(ll);
  Collections.sort(ll);
  System.out.println(ll);
 }

时间: 2024-08-25 08:38:41

Java实例对象间的比较(实现Comparable接口)的相关文章

Effective Java 第三版——14.考虑实现Comparable接口

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. ?14.考虑实现Comparable接口 与本章讨论的其他方法不同,compareTo方法并没有在Object类中声明. 相反,它是Comparable接口中的唯一方法.

Java学习----对象间的继承

继承:子类可以使用父类非私有的成员变量和方法 public class Father { public String name; public String bloodType; private int age; public void work() { System.out.println("working...."); } } public class Son extends Father{ public static void main(String[] args) { Fath

Java中Comparator接口和Comparable接口的使用

一般情况下在实现对对象元素的数组或集合进行排序的时候会用到Comparator和Comparable接口,通过在元素所在的类中实现这两个接口中的一个,然后对数组或集合调用Arrays.sort或者Collentions.sort方法即可实现对数组或集合的排序.就sort方法里面的参数来说,实现了不同的接口则传递的参数也不尽相同.对于实现了Comparator接口的类来说,sort方法需要接受的参数不仅包括数组或集合,还要包括实现了该接口的类对象:而对实现了Comparable接口的类来说,参数不

Java实体对象为什么要实现Serializable接口?

前言 Java实体对象为什么一定要实现Serializable接口呢?在学JavaSE的时候有些实体对象不实现Serializable不是也没什么影响吗? 最近在学习mybatis的时候发现,老师写的实体对象都实现了Serializable接口,我查了查网上说是实现Serilizable接口是为了序列化 先来看下Serializable接口 Serializable是java.io包中定义的.用于实现Java类的序列化操作而提供的一个语义级别的接口.Serializable序列化接口没有任何方法

Item 12 考虑实现Comparable接口

1.Comparable接口,用来做什么. 2.判定类实现的Comparable接口是否正确的方法. 3.不要扩展一个已经实现了Comparable接口的类来增加用于比较的值组件. 1.Comparable接口,用来做什么? ---Comparable接口----- public interface Comparable<T> { int compareTo(T t); } ---Comparable接口----- Comparable接口用来做什么?实现了Comparable接口的类,具备什

Comparable接口的使用

功能: Comparable接口可用于对象的排序或者对象的分组 介绍: Comparable接口强行对实现它的类的每个实例进行自然排序,该接口的唯一方法compareTo方法被称为自然比较方法 方法: int compareTo(Object   o)   利用当前对象和传入的目标对象进行比较: 若是当前对象比目标对象大,则返回1,那么当前对象会排在目标对象的后面 若是当前对象比目标对象小,则返回-1,那么当前对象会排在目标对象的后面 若是两个对象相等,则返回0 实例: import java.

Java comparable接口 对象排序

前面写了一篇文章是关于comparator的,那么comparable就必须拿出来做了分析对比. 关于这俩个接口的文章也比较多,本文着重从完整的代码示例去展现说明. OK 首先,还是看下Comparator这里接口的代码: public interface Comparable<T> { /** * Compares this object with the specified object for order. Returns a * negative integer, zero, or a

Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别(转)

一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:  其中 i.加载是指将编译后的java类文件(也就是.class文件)中的二进制数据读入内存,并将其放在运行时数据区的方法区内,然后再堆区创建一个Java.lang.Class对象,用来封装类在方法区的数据结构.即加载后最终得到的是Class对象,并且更加值得注意的是:该Java.lang.Class对象是单实例的,无论这个类创建了多少个对象,他的Class对象时唯一的!!!!.

Java中对象比较和排序实例

(1)对Element对象进行排序(根据体重和年龄)  (2)要想使用Arrays.sort支持排序的类必须实现Comparable接口    public class Elephant  implements  Comparable {  int weight ;  int   age    ;  float tusklength;  @Override  public int compareTo(Object o) {      Elephant  otherelephant =(Eleph