HashMap hm =  new HashMap(); 
hm.put(1, "阿里山的姑娘");
hm.put(2, "犯错");
hm.put(3, "我的未来不是梦");
Set entry = hm.entrySet();
用entry能使用Entry中的定义的方法? 如果能怎么访问?

解决方案 »

  1.   


    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;public class TestEntry { public static void main(String[] args) {
    HashMap<Integer, String> hm = new HashMap<Integer, String>();  
    hm.put(1, "阿里山的姑娘");
    hm.put(2, "犯错");
    hm.put(3, "我的未来不是梦");

    Set<Map.Entry<Integer, String>> entrySet = hm.entrySet();
    Iterator<Map.Entry<Integer, String>> iterator = entrySet.iterator();
    while (iterator.hasNext()) {
    Entry<Integer, String> entry = iterator.next();

    System.out.println("Key:" + entry.getKey() 
    + ", Value:" + entry.getValue() );
    }
    }
    }
      

  2.   


    Map<Integer,String> map = new HashMap<Integer,String>();
    hm.put(1, "阿里山的姑娘");
                    hm.put(2, "犯错");
                    hm.put(3, "我的未来不是梦");
    Iterator<Entry<Integer,String>> iter = map.entrySet().iterator();
    while(iter.hasNext()){
    Map.Entry<Integer,String> entry = (Entry<Integer,String>) iter.next();
    Object key=entry.getKey();
    Object val = entry.getValue();
    System.out.println(key+"   "+val);
    }
      

  3.   

    Map<Integer,String> hm = new HashMap<Integer,String>();
            hm.put(1, "阿里山的姑娘");
                    hm.put(2, "犯错");
                    hm.put(3, "我的未来不是梦");
            Iterator<Entry<Integer,String>> iter = hm.entrySet().iterator();
            while(iter.hasNext()){
                Map.Entry<Integer,String> entry = (Entry<Integer,String>) iter.next();
                Object key=entry.getKey();
                Object val = entry.getValue();
                System.out.println(key+"   "+val);
            }
      

  4.   

     
    看JDK-API关于HashMap、Set、Entry的说明
      

  5.   

    为什么这样可以实现,原因就在这儿;
    entrySet
    Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作,或者通过对迭代器返回的映射项执行 setValue 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。 这是完全正确的代码!
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    public class TestEntry
     {    public static void main(String[] args) 
    {
            
    Map<Integer,String> hm = new HashMap<Integer,String>();//这儿应注意泛型
      hm.put(1, "阿里山的姑娘"); //调用了 Map的put()的方法
      hm.put(2, "犯错");
      hm.put(3, "我的未来不是梦");
      //用迭代器 遍历这个集合
      Iterator<Entry<Integer,String>> iter = hm.entrySet().iterator();
      //判断是否遍历完
      while(iter.hasNext()) 
    {
    //输出遍历后的结果
      Map.Entry<Integer,String> entry = (Entry<Integer,String>) iter.next();
      int key=entry.getKey();
      String val = entry.getValue();
      System.out.println(key+" "+val);
      }
         
        }
    }