Hashtable
Hashtable 是 Java 中的一个古老的集合类,它实现了 Map 接口,基于哈希表存储键值对。
Hashtable 是线程安全的,所有方法都用 synchronized 修饰,因此在多线程环境下可以安全使用。
不过,由于它的性能较差,现代开发中更推荐使用 HashMap
Hashtable中的t是小写,t是小写,t是小写,t是小写
因为使用的较少,就简单介绍一下
Hashtable 的特点
1,键值对存储:存储的是键值对key-value,键和值都不能为 null。
2,线程安全:所有方法都是同步的,适合多线程环境,因此性能较差。
3,通过哈希函数计算键的存储位置。
4,存储无序性。元素的顺序不固定,取决于哈希函数的结果。
Hashtable和 HashMap 的区别
1, 实现的方法不一样,继承的父类不一样
2, 底层结构的容量不一样,hashMap是16,Hashtable是11
3, HashMap的key和value都可以是null,但是Hashtable的Key和Value不能是null。否则运行会报错的.
4, HashMap的数据采用的定位是Hash算法,但是Hashtable采用的就是hashcode
5, HashMap的性能较高,但是HashTable较低
常用方法
新增元素的方法:
1,put(K key, V value) 将指定的键值对插入到 Hashtable 中。如果键已存在,则替换旧值并返回旧值;如果键不存在,则返回 null删除方法:
1, V remove(Object key) 根据键删除对应的键值对,并返回被删除的值。如果键不存在,则返回 null。 Boolean remove(Object key,Object value):删除对应的键名和对应的值。返回的类型是布尔
2, void clear()清空 Hashtable 中的所有键值对。查找方法:
1,boolean containsKey(Object key) 判断 Hashtable 中是否包含指定的键。如果包含则返回 true,否则返回 false。
2,boolean containsValue(Object value) 判断 Hashtable 中是否包含指定的值。如果包含则返回 true,否则返回 false。
3,int size() 返回 Hashtable 中键值对的数量。
4,boolean isEmpty() 判断 Hashtable 是否为空。如果为空则返回 true,否则返回 false。
5, Enumeration<K> keys() 返回 Hashtable 中所有键的枚举。
6,Enumeration<V> elements() 返回 Hashtable 中所有值的枚举。
7,V get(Object key) 根据键获取对应的值。如果键不存在,则返回 null。
put:将指定的键值对插入到 Hashtable 中
package part;import java.util.Hashtable;
public class Java01 {public static void main(String[] args) {Hashtable<String, String> table = new Hashtable();table.put("zhansan", "19");table.put("lisi", "20");// {lisi=20, zhansan=19}System.out.println(table);}
}
remove:根据键删除对应的键值对
package part;import java.util.Hashtable;public class Java01 {public static void main(String[] args) {Hashtable<String, String> table = new Hashtable();table.put("zhansan", "19");table.put("lisi", "20");// 移除键名是zhansan的这一项table.remove("zhansan");// {lisi=20}System.out.println(table);}
}
import java.util.Hashtable;public class Java01 {public static void main(String[] args) {Hashtable<String, String> table = new Hashtable();table.put("zhansan", "19");table.put("lisi", "20");// 移除键名是zhansan,并且对应的值是 119,返回的是一个布尔值Boolean flag1 = table.remove("zhansan", "119");System.out.println(flag1); // false// 移除键名是zhansan,并且对应的值是 19,返回的是一个布尔值Boolean flag2 = table.remove("zhansan", "19");System.out.println(flag2); // trueSystem.out.println(table); // {lisi=20}}
}
判断 Hashtable 中是否包含指定的键和判断是否包含某个值
package part;
import java.util.Hashtable;
public class Java01 {public static void main(String[] args) {Hashtable<String, String> table = new Hashtable();table.put("zhansan", "19");table.put("lisi", "20");// 判断 Hashtable 中是否包含指定的键。如果包含则返回 true,否则返回 false。Boolean isYou = table.containsKey("zhansan");System.out.println(isYou); // true// 判断 Hashtable 中是否包含指定的值。如果包含则返回 true,否则返回 false。Boolean isYou2 = table.containsValue("19");System.out.println(isYou2); // true}
}
尾声
准备开始学习java了。
今天学习的第五天,每天都会发文章,我要卷起来。
请小伙伴们监督我,奥利给