/*
*对obj方法重写 注意变量的类型
*/
import java.util.*;
public class Testcomp
{
public static void main(String[] args)
{
List l1 = new LinkedList();
l1.add(new Name("hua","kong"));
l1.add(new Name("ting","fan"));
l1.add(new Name("fang","kong"));
System.out.println(l1);
Collections.sort(l1);
System.out.println(l1);
}
}
class Name implements Comparable
{
String firstname;///String 类对compareTO方法已经重写了 所以可以直接调用
String lastname;
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;
}///重写tostring方法 输出name时会直接输出全名
public boolean equals(Object obj)//只有当 姓和名全相同时才相等 所以要重写 equals方法
{
if(obj instanceof Name)
{
Name n =(Name) obj;
return firstname.equals(n.firstname)&&lastname.equals(n.lastname);
}//return 语句会结束当前的方法 所以下一条 return可加else可不加 效果都一样
return super.equals(obj);
}
public int hashCode()
{
return firstname.hashCode();
}//对hashcode重写 hashcode位于obj类内
public int compareTo(Object o)
{
Name n = (Name) o;
int lastcmp = lastname.compareTo(n.lastname);///String 类对compareTO方法已经重写了 所以可以直接调用
return
(lastcmp !=0 ? lastcmp:firstname.compareTo(n.firstname));
}
}
*对obj方法重写 注意变量的类型
*/
import java.util.*;
public class Testcomp
{
public static void main(String[] args)
{
List l1 = new LinkedList();
l1.add(new Name("hua","kong"));
l1.add(new Name("ting","fan"));
l1.add(new Name("fang","kong"));
System.out.println(l1);
Collections.sort(l1);
System.out.println(l1);
}
}
class Name implements Comparable
{
String firstname;///String 类对compareTO方法已经重写了 所以可以直接调用
String lastname;
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;
}///重写tostring方法 输出name时会直接输出全名
public boolean equals(Object obj)//只有当 姓和名全相同时才相等 所以要重写 equals方法
{
if(obj instanceof Name)
{
Name n =(Name) obj;
return firstname.equals(n.firstname)&&lastname.equals(n.lastname);
}//return 语句会结束当前的方法 所以下一条 return可加else可不加 效果都一样
return super.equals(obj);
}
public int hashCode()
{
return firstname.hashCode();
}//对hashcode重写 hashcode位于obj类内
public int compareTo(Object o)
{
Name n = (Name) o;
int lastcmp = lastname.compareTo(n.lastname);///String 类对compareTO方法已经重写了 所以可以直接调用
return
(lastcmp !=0 ? lastcmp:firstname.compareTo(n.firstname));
}
}