Map元素取出方式
1.keyset()
返回set集合。迭代器:取出了set集合用迭代器取键。。。get(键)将map集合转化成set,再取键取值。
2.EntrySet()
里面存放的时是关系,把关系取出来。返回Map.entry,将map集合中的映射关系存入到Set集合中。,entry接口是Map接口里面内部接口,Map需要直接访问MapSet中的数据,内部嵌套类,没有Map就没有Map.entry.
Map<String , String > tm =new TreeMap ();
tm.put ("b李白", "唐") ;
tm.put ("a李白", "唐") ;
tm.put ("杜甫", "唐") ;
tm.put ("苏轼", "宋") ;
//利用keyset()方法来获取键
Set<String > ketset =tm .keySet ();
Iterator<String > it =ketset .iterator ();
while(it .hasNext ()){
String
key =it .next ();
System .out.println( key+ "="+ tm. get(key ));
}
//利用entrySet()方法获取Map的键值对
Set <Map .Entry <String , String >> enterset =tm .entrySet ();
for(Map .Entry <String , String > me :enterset )
System .out.println( me. getKey()+"=="+me.getValue()) ;
}
}
Map.Entry里面存放的时映射关系,这个接口里面有gekKey和getValue的方法。
HashMap()和TreeMap()
HashMap基于hashCode()的实现,查找速度最优,TreeMap是根据键的自然顺序排列的,排列的顺序是通过comparable或者comparator决定,treeMap是唯一具有subMap的Map。
//定义TreeMap
Map <String , String > tm = new TreeMap <String , String >() ;
tm .put ( "b李白", "唐") ;
tm .put ( "a李白", "唐") ;
tm .put ( "杜甫", "唐") ;
tm .put ( "苏轼", "宋") ;
//定义一个HashMap
Map <String ,String > hm = new HashMap <String , String >() ;
hm .putAll ( tm) ;//将 tm中的元素全部装入 hm中
System .out .println ( tm) ;
System .out .println ( hm) ;
/*TreeMap: {a李白=唐, b李白=唐, 杜甫=唐,
苏轼=宋}
HashMap:
{杜甫=唐, 苏轼=宋, a李白=唐, b李白=唐}*/
结果是显而易见的,TreeMap按照字母的自然顺序排列了。