疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Map接口的学习


 

接口Map<K, V>
 
一、Map功能
 
1.添加
 
put(K key, V value)
 
putAll(Map<? extends K, ? extends V>);
 
2.删除
 
clear()
 
remove(Object key); 返回对应的值
 
 
3.判断
 
containsKey(Object key)
 
containsValue(Object value)
 
isEmpty()
 
 
4.获取
 
get(Object key)  :不在返回null
 
size()
 
values();
 
-------------------------------------
 
重点:entrySet() 、 keySet();
 
map集合的两种取出方式
 
1.keySet : Set<K>:返回此映射中包含的键的set视图
 
因为Set具备迭代器,所以可以通过迭代方式取出所有的键,再通过get方法,获取每一个键对应的值。
 
Map<String, String> map = new HashMap<String, String>();
 
map.put();
 
//先获取键的set集合
 
Set<String> ks = map.keySet();
 
//迭代器
 
Iterator<String> it = ks.iterator();
 
while(it.hasNext()){
 
        String key = it.next();
 
        String value = map.get(key);
 
        System.out.println(key + “-->”+ value);
 
}
 
2.entrySet:  Set<Map.Entry<K, V>>
 
返回此映射中包含的映射关系的Set视图
 
Map.Entry:将map集合中的映射关系存入到Set集合中,而这个关系的数据类型就是Map.Enty
 
//将Map集合中的映射关系取出,存入到Set集合
 
Set<Map.Entry<String, String>> entrySet = map.entrySet();
 
Iterator<Map.Entry<String, String>> it = entrySet.iterator();
 
while(it.hasNext()){
 
Map.Entry<String, String> me = it.next();
 
String key = me.getKey();
 
String value = me.getValue();
 
System.out.println(key + “  ” + value);
 
}
--------------------------------------
 
Entry也是一个接口,它是Map接口中的一个内部接口
 
Interface Map
 
{
 
public static Interface Entry{
 
         public abstract Object getKey();
 
         public abstract Object getValue();
 
}
 
}
 
class HashMap implements Map
 
{
 
class HaHa implements Map.Entry{
 
         public Object getKey(){}
 
         public Object getValue(){}
 
}
 
 
 
}
 
-------------------------------------
 
二、常见的小弟
 
Hashtable:底层是哈希表数据结构,不可以存入null,它是线程同步的(JDK1.0)  效率低
 
HashMap:基于哈希表的Map接口,可以使用null,它不是线程同步的。(JDK1.2)  效率高
 
TreeMap:基于二叉树的,可以用于键排序,不是线程同步。
 
Set:set底层就是使用了Map集合
 
三、Map Demo
 
Map<String, String> map = new HashMap<String, String>();
 
map.put(“1”,”cc”);
 
sysout(map.containsKey(1));
 
sysout(map.remove(“1”));
 
map.get(“1”);//不在返回null
 
注意:当时HashMap的时候map.put(“abc”,null);
 
这样是可以的。当HashTable就不可以了。
 
//values()
 
获取map集合中所有的值。
 
map.values();//返回Collection<V>
 
Collection<String> coll = map.values();