HashMap的遍历和各种用法

  1. 遍历key 和value
  2. firstmethod
  3. HashMap maps=new HashMap();  

  1.        maps.put(1,"xiaomao");  
  2.        maps.put(2,"xiaogou");  
  3.        maps.put(3,"xiaohua");  
  4.        Set> entrySet=maps.entrySet();  
  5.        for(Map.Entry entry: entrySet){  
  6.         System.out.println(entry.getKey() + ".........." + entry.getValue());  
  7.        }  
  8. second method
  9. Iterator < Map . Entry < String , String >> iterator = map . entrySet ( ) . iterator ( ) ;
    while ( iterator . hasNext ( ) ) {
    Map . Entry < String , String > entry = iterator . next ( ) ;
    entry . getKey ( ) ;
    entry . getValue ( ) ;
    }
    third method
  10. Set < Entry < String , String >> entrySet = map . entrySet ( ) ;
    for ( Entry < String , String > entry : entrySet ) {
    entry . getKey ( ) ;
    entry . getValue ( ) ;
    }


key为对象时得注意必须要修改equals方法 应为key是唯一的 如果不修改equals 传入对象和key 永远不会相等

  1.      public boolean equals(Object obj)    
  2.      {    
  3.      if(obj instanceof key)    
  4.      {    
  5.       if(((key)obj).i == i)//自己社判断条件哦    
  6.          return true;    
  7.      }    
  8.      return false;    
  9.      }    
  10.      @Override    
  11.      public int hashCode()    
  12.      {    
  13.      return i;   // 自己设置判断条件哦!看具体业务流程
  14.      }   

详细案列  mldn的 当你的key为对象时特别得注意
  1. import java.util.Map ;  
  2. import java.util.HashMap ;  
  3. class Person{  
  4.     private String name ;  
  5.     private int age ;  
  6.     public Person(String name,int age){  
  7.         this.name = name ;  
  8.         this.age = age ;  
  9.     }  
  10.     public String toString(){  
  11.         return "姓名:" + this.name + ";年龄:" + this.age ;  
  12.     }  
  13.     public boolean equals(Object obj){  
  14.         if(this==obj){  
  15.             return true ;  
  16.         }  
  17.         if(!(obj instanceof Person)){  
  18.             return false ;  
  19.         }  
  20.         Person p = (Person)obj ;  
  21.         if(this.name.equals(p.name)&&this.age==p.age){  
  22.             return true ;  
  23.         }else{  
  24.             return false ;  
  25.         }  
  26.     }  
  27.     public int hashCode(){  
  28.         return this.name.hashCode() * this.age ;  //确保hashcode值不同
  29.     }  
  30. };  
  31. public class HashMapDemo08{  
  32.     public static void main(String args[]){  
  33.         Map map = null ;  
  34.         map = new HashMap() ;  
  35.         map.put(new Person("张三",30),"zhangsan");    // 增加内容  
  36.         System.out.println(map.get(new Person("张三",30))) ;  
  37.     }  
  38. };  
 

HashMap的containsKey方法说明



上面是HashMap查找一个实例的过程,可以看到他的判断条件是

[java]  view plain copy
  1. e.hash == hash 并且 "font-family: Arial, Helvetica, sans-serif;">(k = e.key) == key || (key != null && key.equals(k))  
前面一个条件是说两个对象的hashCode一样,后面一个条件是说两个类相等,这里对应Object类里的两个方法:getHashCode()和equals()

因此,要想使HashMap按照我们的意思去比较两个对象一不一样,不仅要重写equals方法, 还要重写 getHashCode方法





















你可能感兴趣的:(hashmap遍历,java)