《1》 HashMap:无序,key不允许重复。
a.向集合中增加和取出内容:
声明Map接口对象时指定好了key和value的泛型类型,之后通过put()方法向Map集合中增加内容,最后通过get()方法取出一个key对应的value内容。
b. 判断指定的key或value是否存在 :
如果要判断某一个指定的key或value是否存在,可以使用Map接口中提供的containsKey(Object key)和containsValue(Object value)两个方法
c. 输出全部的key:
在Map中提供了一个叫做keySet()的方法,可以将一个Map中的全部key变为一个Set集合,一旦有了Set实例,就可以直接使用Iterator输出。但是在进行操作时一定要注意的是,接收的Set集合中指定的泛型要和Map中key的泛型类型保持一致。
d.输出全部的value :
如果要输出全部的value,则使用values()方法,此方法的返回类型是Collection。在进行操作时也同样需要注意泛型的类型。
《2》Hashtable:无序,key不允许重复。
Hashtable和HashMap方法几乎一样。。。
例:
//下面函数对于HashMap和HashTable都成立。
// Map<String,String> map = new HashMap<String,String>();
Map<String,String> map = new HashTable<String,String>();
map.put("a","aaa");
map.put("b","bbb");
map.put("c","ccc");
//所有的key值
Set<String> mkey = map.keySet();
Iterator<String> iterk = mkey.iterator();
while(iterk.hasNext()) {
System.out.println(iterk.next());
}
//所有的Value值
Collection<String> vmap = map.values();
Iterator<String> iterv = vmap.iterator();
while(iterv.hasNext()) {
System.out.println(iterv.next());
}
《3》HashMap和HashTable的区别
比较 | HashMap | HashTable |
性能 | 异步处理,性能高 | 同步处理,性能低 |
线程安全 | 非线程安全操作类 | 线程安全操作类 |
用HashMap还是比较多的 。
《4》TreeMap:排序,按集合中的key排序,key不允许重复。
TreeMap可以按照key排序,之前的代码使用的是String类作为key,因为String 类本身已经实现了Comparable接口,所以程序执行时不会有任何的问题;而如果使用一个自定义的类作为key,则此类必须实现Comparable 接口,否则将出现类转换异常。
《5》注意事项 : (Map很少直接输出,一般做查询使用)
不能直接使用迭代输出Map中的全部内容
(1)将Map的实例通过entrySet()方法变为Set接口对象。
(2)通过Set接口实例为Iterator实例化。
(3)通过Iterator迭代输出,每个内容都是Map.Entry的对象。
(4)通过Map.Entry进行key→value的分离。
在前面提过,Map中的每对数据都是通过Map.Entry保存的,所以如果最终要进行输出也应该使用Map.Entry完成。
例:在上一篇Map.Entry提到了!!!