Java 哈希表的实现

本文探讨了Java哈希表中键的要求,指出哈希表的键不必具备可比较性,但需实现hashCode方法。对比了哈希表与基于红黑树的TreeMap的查找性能,实验结果显示哈希表在查找速度上更优。此外,还提及了在不确定存储元素数量时分析哈希表时间复杂度的重要性。
摘要由CSDN通过智能技术生成

哈希表中泛型的键与红黑树中泛型的键本质是不一样的。

由于实现的树是二分搜索树,所以要求键key必须具有可比较性。

而对于哈希表是不需要这种性质的。

对哈希表中键key必须有一个要求:必须实现hashCode方法。

在Java中所有的类型的父类都是Object。而Object类中默认就有hashCode方法。所以所有类型默认都有实现hashCode的方法。

 

利用TreeMap(底层为红黑树)来实现哈希表:

import java.util.TreeMap;

public class HashTable<K, V> {
    
    //利用TreeMap封装成一个数组
    //数组:每个元素存放着键和值
    private TreeMap<K, V>[] hashtable;
    //哈希表中的元素个数
    private int size;
    //哈希表的长度
    private int M;

    public HashTable(int M){
        this.M = M;
        size = 0;
        //开辟数组空间
        hashtable = new TreeMap[M];
        //对每一个TreeMap进行实例化
        for(int i = 0 ; i < M ; i ++){
            hashtable[i] = new TreeMap<>();
        }
    }

    public Hash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值