哈希表 哈希冲突解决之链地址法

哈希函数: 使用特定的哈希算法,将关键字哈希化,压缩到一个较小的范围

哈希表: 使用哈希算法, 把一个大范围的数字哈希化成一个小范围的数字。 这个小范围对应着数组的下标。 使用哈希函数向数组插入数据后, 这个数组称为哈希表

链地址法: 开放地址法中,通过在哈希表中寻找一个空位解决哈希冲突问题。另一个方法是在哈希表每个单元中设置链表。某个数据项的关键字还是像通常一样映射到哈希表的单元,而数据项本身插入到这个单元的链表中

装填因子: 链地址法中的装填因子(数据项数和哈希表容量的比值)与开发地址法的不同。 在链地址法中,需要在有N个单元的数组中装入N个或更多的数据项;因此装填因子一般为1,或比一大。 这没问题;因为,某些位置包含的链表中包含两个或两个以上的数据项。

下面将使用链地址法 实现哈希表并解决哈希冲突问题

1. 创建一个link类

public class Link {

    private int iData;
    public Link next;


    public Link(int it){
        this.iData = it;
    }

    public int getKey(){
        return iData;
    }

    public void displayLink(){
       System.err.print(iData+" ");
    }
}

2. 创建一个SortedList类

public class SortedList {

    private Link first;


    public void SortedList(){
        first = null;
    }

    public void insert(Link theLink){
        int key = theLink.getKey();
        Link previous =null;
        Link current = first;

        while(current !=null && key> current.getKey()){
            previous = current;
            current = current.next;
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值