Map接口:存放的是具有映射关系的键值对,键映射到值,键必须是唯一的
Hashtable 类,Map接口的实现类,键和值都不能为null
Hashtable 是同步的,是线程安全的
java
public class MapTest {
public static void main(String[] args) {
//创建一个空的Map
Hashtable ht = new Hashtable();
//增加
ht.put("hello", 123) ;
//ht.put(null, "java"); //null不能作为键
ht.put(100, 123); //只可以重复
//ht.put(true, null); //null不能作为值
ht.put("java", true);
//删除:根据键删除
ht.remove(100); //自动加包
//修改
ht.put("hello",true); //键不能重复
//查询:返回键映射的值
Object value = ht.get("hello");
System.out.println("value="+value);
//遍历
Set keys = ht.keySet(); //keySet():返回哈希表的键(集)
//集合专用的迭代器
System.out.println("--集合专用的迭代器--");
Iterator it = keys.iterator(); //返回集的迭代器
while(it.hasNext()){
Object key = it.next(); //迭代获取一个键
Object value1 = ht.get(key); //返回键映射的值
System.out.println(key+"--"+value1);
}
//简洁for循环
System.out.println("--简洁for循环--");
for(Object key:keys){
Object value2 = ht.get(key);
System.out.println(key+"--"+value2);
}
//输出
System.out.println("哈希表长度?"+ht.size());
System.out.println("是否为空?"+ht.isEmpty());
System.out.println(ht);
}
}
输出:
value=true
--集合专用的迭代器--
java--true
hello--true
--简洁for循环--
java--true
hello--true
哈希表长度?2
是否为空?false
{java=true, hello=true}