- 遍历key 和value
- firstmethod
- HashMap<Integer,String> maps=new HashMap<Integer,String>();
- maps.put(1,"xiaomao");
- maps.put(2,"xiaogou");
- maps.put(3,"xiaohua");
- Set<Map.Entry<Integer, String>> entrySet=maps.entrySet();
- for(Map.Entry<Integer, String> entry: entrySet){
- System.out.println(entry.getKey() + ".........." + entry.getValue());
- }
- second method
-
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
-
Set < Entry < String , String >> entrySet = map . entrySet ( ) ;for ( Entry < String , String > entry : entrySet ) {entry . getKey ( ) ;entry . getValue ( ) ;}
key为对象时得注意必须要修改equals方法 应为key是唯一的 如果不修改equals 传入对象和key 永远不会相等
- public boolean equals(Object obj)
- {
- if(obj instanceof key)
- {
- if(((key)obj).i == i)//自己社判断条件哦
- return true;
- }
- return false;
- }
- @Override
- public int hashCode()
- {
- return i; // 自己设置判断条件哦!看具体业务流程
- }
详细案列 mldn的 当你的key为对象时特别得注意
- import java.util.Map ;
- import java.util.HashMap ;
- class Person{
- private String name ;
- private int age ;
- public Person(String name,int age){
- this.name = name ;
- this.age = age ;
- }
- public String toString(){
- return "姓名:" + this.name + ";年龄:" + this.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 ; //确保hashcode值不同
- }
- };
- public class HashMapDemo08{
- public static void main(String args[]){
- Map<Person,String> map = null ;
- map = new HashMap<Person,String>() ;
- map.put(new Person("张三",30),"zhangsan"); // 增加内容
- System.out.println(map.get(new Person("张三",30))) ;
- }
- };
上面是HashMap查找一个实例的过程,可以看到他的判断条件是
- e.hash == hash 并且 <span style="font-family: Arial, Helvetica, sans-serif;">(k = e.key) == key || (key != null && key.equals(k))</span>
因此,要想使HashMap按照我们的意思去比较两个对象一不一样,不仅要重写equals方法, 还要重写 getHashCode方法