Java中的集合-Map
时间:2010-07-18 来源:blogzhoubo
Map接口没有继承Collection接口。它通过键的值指定数据存放位置。键值不能重复,但其值可以为null。
- HashMap
- Hashtable
HashMap
它用来将键-值映射关系存储到散列表中。它是线程不安全的。
public HashMap()//构造一个初始容量为16,加载因子为0.75的HashMap,容量为12(16x0.75)
public HashMap(int initialCapacity)//构造一个初始容量为initialCapacity的HashMap
public HashMap(int initialCapacity, float loadFactor)//构造一个指定初始容量和加载因子的HashMap
public HashMap(Map m)//构造一个与指定Map映射关系相同的HashMap
如果存取的数据超过了现在的容量,HashMap会自动增加容量,增加的容量是原来的容量的2倍加1。
public void clear()//删除映射中所有映射关系
public boolean containsKey(Object key)//判断HashMap中是否存在指定的键的映射关系
public boolean containsValue(Object value)//判断HashMap中是否存在指定的值的映射关系
public V get(Object key)//返回key所对应的值
public boolean isEmpty()//判断HashMap是否为空
public V put(K key, V value)//在映射中放入指定键与指定值
public void putAll(Map m)//将m复制到当前映射中
public int size()//返回映射中键-值映射关系的数目
public V remove(Object key)//删除映射中存在该键的映射关系
示例代码:
import java.util.HashMap;
import java.util.Iterator;
public class HashMapTest{
public static void main(String[] args){
HashMap hm = new HashMap(10,0.5f);
hm.put(1,"a");
hm.put(2,"b");
System.out.println(hm.get(2));
hm.remove(1);
if(hm.containsKey(2))
System.out.println("key 2 is exist");
if(hm.containsValue("b"))
System.out.println("value b is exist");
HashMap hm2 = new HashMap(hm);
hm2.put(3,"c");
System.out.println("hm2 size:"+hm2.size());
Iterator it = hm2.keySet().iterator();
while(it.hasNext()){
int key = Integer.parseInt(it.next().toString());
System.out.println("key:"+key+" value:"+hm2.get(key));
}
}
}
执行结果:
C:\javastudy>java HashMapTest
b
key 2 is exist
value b is exist
hm2 size:2
key:2 value:b
key:3 value:c
C:\javastudy>
Hashtable
它可以用来表示一个线程安全的散列表。使用方法和HashMap完全相同。