首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Map会合遍历

2013-08-06 
Map集合遍历?public class MapTest {public static void main(String[] args) {MapString, String map

Map集合遍历

?

public class MapTest {    public static void main(String[] args) {        Map<String, String> map = new HashMap<String, String>();        map.put("01", "jade1");        map.put("02", "jade2");        map.put("03", "jade3");        map.put("04", "jade4");        map.put(null, "jade");                //getValue4KeySet(map);        getValue4EntrySet(map);    }    public static void getValue4KeySet(Map map) {        Set set = map.keySet();        for (Object key : set) {            System.out.println("key:" + key + ",value:" + map.get(key));        }    }            public static void getValue4EntrySet(Map map){        Set<Map.Entry> set = map.entrySet();        for (Iterator iterator = set.iterator(); iterator.hasNext();) {            Entry entry = (Entry) iterator.next();            System.out.println(entry.getKey()+","+entry.getValue());                    }    }}

??

?

?? 上面的操作,无论是

map.keySet()

?? 还是

map.entrySet()

?? 都是返回一个Set集合,所以说Map是基于Set的操作,数据无序,不可重复,Map的key可以为null,Set的数据可以存null

?

?

Set set = map.keySet();

??? Set集合中存放的是map的所有key,再通过key来取value,map.getValue(key);

?

??

Set<Map.Entry> set = map.entrySet();

??? 返回的其实是个Ma.Entry类型的set集合,,而Map.Entry中存放的是key-value这样的数据项(就是key-value识为一个Entry一个整体,认为是一个关系对象);只要使用entry.getKey,entry.getValue就可以直接获取到这个Entry里面的key,value;

?

? 查看api得知Entry也是个接口,那么Map.Entry,就是Entry是Map接口的内部接口,getKey,getValue是Entry的方法,定义在内部大概是因为这个Entry本身就是为Map服务的这是伪代码,这里没有写泛型,无所谓了

public interface Map {    interface Entry{        public abstract Object getKey();        public abstract Object getValue();    }}

? 最上面代码(MapTest类)使用的既然是HashMap类为实现类,可以调用entrySet(),说明在HashMap中,形如:

public class HashMap implements Map {    class Entry implements Map.Entry{        @Override        public Object getKey() {            return null;        }        @Override        public Object getValue() {            return null;        }    }}

?

? 才可以通过,这样的方式来操作

Map map = new HashMap();        map.put("01", "jade1");        map.put(null, "jade");        Set<Entry> set = map.entrySet();        for (Entry entry : set) {            entry.getKey();            entry.getValue();        }

?

热点排行