java第9天代码(集合类)-set

/**********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***********/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值