日期:2014-05-20  浏览次数:20756 次

面试被问到 如何遍历一个map
在腾讯面试J2ee,被问到如何遍历一个map,
又不是笔试,这要怎么答啊,谁知道这个问题是在问什么,答案应该怎么答啊?

------解决方案--------------------
先获得map的keySet,然后遍历该set,以set中的每一个元素做为键去获取map中的对应值。
------解决方案--------------------
Java code
public   class   MyMap{ 
      public   static   void   main(String[]   args){ 
              Map   map   =   new   HashMap(); 
              map.put( "1 ", "2 "); 
              map.put( "2 ", "3 "); 
              Set   set   =   map.entrySet(); 
              Iterator   i   =   set.Iterator(); 
              while(i.hasNext){ 
                    System.out.println(i.next); 
              } 
      } 
}

------解决方案--------------------
嗯 ,是有两种方法,但感觉到使用entryset好一些~
------解决方案--------------------
j2ee应该是在jsp页面来遍历吧。而不是直接使用纯java代码。使用纯java代码问这个问题的话,
那把腾迅说得也太没得水准了吧
使用struts的逻辑标签来做。
<logic:iterator name="maps" scope="request" id="m">
${m.key}---${m.value}
</logic:iterator>
------解决方案--------------------
Java code

        Map<String,String> map = new HashMap<String,String>(){};

        map.put("0", "0");
        map.put("3", "3");
        map.put("1", "1");

        //第一种
        Set set = map.keySet();
        Iterator it = set.iterator();
        while(it.hasNext()){
            String str = it.next().toString();
            System.out.println("1--"+str+"--"+map.get(str));
        }
        //第二种
        Set<Entry<String,String>> entryset = map.entrySet();
        Iterator iter = entryset.iterator();
        while(iter.hasNext()){
            Entry<String,String> entry = (Entry<String,String>)iter.next();
            System.out.println("2--"+entry.getKey()+"--"+entry.getValue());
        }
        //第三种
        for(Entry<String,String> entry : map.entrySet()){
            System.out.println("3--"+entry.getKey()+"--"+entry.getValue());
        }
        //后两种基本原理一样

------解决方案--------------------
建议entrySet(),上次在代码里用entrySet(),被人说很奇怪,妈的,怀疑他懂不懂java