/**********Customer .java begin***********/
import java.util.HashSet;
import java.util.Set;
/**
* 如果两个Customer对象nama属性和age属性相同,那么这两个Customer对象相等。
* @author Administrator
*
*/
public class Customer {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public Customer(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Customer(){}
/**
* 如果Customer类覆盖了Object类中的equals方法,但没有覆盖Object中的HashCode方法,
* 就会导致当Customer1.equals.(Customer2)为true时,而Customer1和Customer2的哈
* 希码不一定一样,就会使HashSet无法工作。
*/
@Override
public boolean equals(Object obj) {
if((obj instanceof Customer)){
Customer other=(Customer) obj;
if(this.name.equals(other.getName()) && this.age==other.getAge()) {
return true;
}
}
return false;
}
/**
* 为了保证HashSet的正常工作,如果Customer类覆盖了equals方法,同时也应该去覆盖hashCode
* 方法,并且保证两个相等对象的哈希码也是一样。
*/
// @Override
public int hashCode() {
int result;
result=(name==null?0:name.hashCode());
result=result+age;
return result;
}
public static void main(String args[]){
Set set=new HashSet();
Customer cust1=new Customer("mingkun",25);
Customer cust2=new Customer("mingkun",25);
set.add(cust1);
set.add(cust2);
System.out.println(cust1.hashCode());
System.out.println(cust2.hashCode());
System.out.println(cust1.equals(cust2));
System.out.println(cust1==cust2);
System.out.println(set.size());
}
}
/**********Customer .java end***********/
/********** CustomerComp .java begin***********/
import java.util.*;
public class CustomerComp implements Comparable {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public CustomerComp(String name, int age) {
super();
this.name = name;
this.age = age;
}
public CustomerComp() {}
public int compareTo(Object obj){
CustomerComp other=(CustomerComp) obj;
//先按照name排序
if(this.name.compareTo(other.getName())>0){
return 1;
}
if(this.name.compareTo(other.getName())<0){
return -1;
}
//再按照age排序
// if(this.age>other.getAge()){
// return 1;
// }
// if(this.age<other.getAge()){
// return -1;
// }
return 0;
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof CustomerComp))return false;
CustomerComp other=(CustomerComp) obj;
if(this.name.equals(other.getName()) && this.age==other.getAge()) {
return true;
}else{
return false;
}
}
@Override
public int hashCode() {
int result;
result=(name==null?0:name.hashCode());
result=result+age;
return result;
}
public String toString(){
return "name="+name+" age="+age;
}
public static void main(String args[]){
Set set=new TreeSet();
set.add(new CustomerComp("旺财",24));
set.add(new CustomerComp("王二",22));
set.add(new CustomerComp("王二",22));
set.add(new CustomerComp("李四",29));
set.add(new CustomerComp("翠花",25));
set.add(new CustomerComp("翠花",25));
set.add(new CustomerComp("张三",31));
Iterator it=set.iterator() ;
while(it.hasNext()){
CustomerComp cc=(CustomerComp) it.next();
System.out.println(cc);
}
}
}
/********** CustomerComp .java end***********/
/********** TestHashSet .java begin***********/
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class TestHashSet implements Comparable{
private String name;
private String password;
public TestHashSet(String name, String password) {
super();
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public TestHashSet(){}
public String toString(){
return "name="+name+" password="+password;
}
public int compareTo(Object arg0) {
// TODO Auto-generated method stub
return 0;
}
public static void main(String[] args) {
Set set =new HashSet();
// TestHashSet th1=new TestHashSet("ambow","ambow");
// TestHashSet th2=new TestHashSet("ambow","frfr");
// TestHashSet th3=new TestHashSet("ambow","bgbg");
// TestHashSet th4=new TestHashSet("ambow","bgbg");
// set.add(th1);
// set.add(th2);
// set.add(th3);
// set.add(th4);
// Iterator it=set.iterator();
// while(it.hasNext()){
// System.out.println(it.next());
// }
set.add(new TestHashSet("ambow","ambow"));
set.add(new TestHashSet("vfvf","ambow"));
set.add(new TestHashSet("ambow","juju"));
set.add(new TestHashSet("vfvf","nhnh"));
set.add(new TestHashSet("ambow","ambow"));
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
/********** TestHashSet .java end***********/
/********** TestTreeSet .java begin***********/
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
/**
* 自然排序(默认并且升序):当TreeSet向集合中加入一个对象时,会把它插入到有序的对象序列中。
* @author Administrator
*
*/
public class TestTreeSet {
public static void main(String args[]){
Set set=new TreeSet();
set.add(new Integer(3));
set.add(new Integer(8));
set.add(new Integer(2));
set.add(new Integer(25));
set.add(new Integer(2));
set.add(new Integer(10));
Iterator it=set.iterator();
while(it.hasNext()){
System.out.print(it.next()+" ");
}
}
}
/********** TestTreeSet .java end***********/
/********** TestUpdateCustomer.java begin***********/
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class TestUpdateCustomer{
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public TestUpdateCustomer(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String toString(){
return "name="+name+" age="+age;
}
public TestUpdateCustomer(){}
/*
* 修改一个对象值
*/
public static void main(String args[]){
Set set=new TreeSet();
TestUpdateCustomer cust1=new TestUpdateCustomer("mingkun",25);
TestUpdateCustomer cust2=new TestUpdateCustomer("mingkun",25);
set.add(cust1);
// set.add(cust2);
System.out.println(set.size());
cust1.setName("ambow");
Iterator it=set.iterator();
while(it.hasNext()){
TestUpdateCustomer customer=(TestUpdateCustomer) it.next();
System.out.println(customer);
}
}
// public int compareTo(Object arg0) {
// // TODO Auto-generated method stub
// return 0;
// }
}
/********** TestUpdateCustomer.java end***********/