Comparable

package org.lxh.demo13.setdemo;

import java.util.LinkedList;
import java.util.List;
import java.util.Collections;

class Person implements Comparable<Person>{
	
	private String name;
	private int age;
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public boolean equals(Object obj) {
		if(this == obj) {
			return true;
		}
		
		if(!(obj instanceof Person)) {
			return false;
		}
		
		Person p = (Person)obj;
		
		if(this.name.equals(p.name)&&this.age == p.age) {
			return true;
		}else {
			return false;
		}		
	}
	
	public int hashCode() {
		return this.name.hashCode() * this.age;
	}
	
	public String toString() {
		return "姓名:" + this.name + ";年龄:" + this.age;
	}

	public int compareTo(Person per) {	
		if(this.age > per.age) {
			return 1;
		}else if(this.age < per.age) {
			return -1;
		}else {
			return this.name.compareTo(per.name);
		}
	}	
}

public class RepeatDemo02 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {	
		List<Person> allList = new LinkedList<Person>();
		allList.add(new Person("李四",31)) ;
		allList.add(new Person("王五",32)) ;
		allList.add(new Person("王五",32)) ;
		allList.add(new Person("王五",32)) ;
		allList.add(new Person("赵六",33)) ;
		allList.add(new Person("孙七",33)) ;
		allList.add(new Person("张三",30)) ;
		System.out.println(allList);	//没排序
		Collections.sort(allList);   //必须调用一下sort,否则没有任何效果
		System.out.println(allList); //排序了
	}
}



package com.mldn.compare.sort;

import java.util.Set;
import java.util.TreeSet;

class Person implements Comparable<Person>{
	
	private String name;
	private int age;
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public boolean equals(Object obj) {
		if(this == obj) {
			return true;
		}
		
		if(!(obj instanceof Person)) {
			return false;
		}
		
		Person p = (Person)obj;
		
		if(this.name.equals(p.name)&&this.age == p.age) {
			return true;
		}else {
			return false;
		}		
	}
	
	public int hashCode() {
		return this.name.hashCode() * this.age;
	}
	
	public String toString() {
		return "姓名:" + this.name + ";年龄:" + this.age;
	}

	public int compareTo(Person per) {	
		if(this.age > per.age) {
			return 1;
		}else if(this.age < per.age) {
			return -1;
		}else {
			return this.name.compareTo(per.name);
		}
	}
	
}

public class RepeatDemo03 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Set<Person> allSet = new TreeSet<Person>() ;
		allSet.add(new Person("李四",31)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("赵六",33)) ;
		allSet.add(new Person("孙七",33)) ;
		allSet.add(new Person("张三",30)) ;
		System.out.println(allSet); //排序了

	}

}

你可能感兴趣的:(comparable,对象比较)