java中的Hashtable

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 中的所有键值对。

查找方法:
1boolean containsKey(Object key) 判断 Hashtable 中是否包含指定的键。如果包含则返回 true,否则返回 false2boolean containsValue(Object value) 判断 Hashtable 中是否包含指定的值。如果包含则返回 true,否则返回 false3int size() 返回 Hashtable 中键值对的数量。
4boolean isEmpty() 判断 Hashtable 是否为空。如果为空则返回 true,否则返回 false5, 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); // true
      System.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了。
今天学习的第五天,每天都会发文章,我要卷起来。
请小伙伴们监督我,奥利给

posted @   何人陪我共长生  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
点击右上角即可分享
微信分享提示