Hash@哈希算法@java实现HashMap算法

一、什么是Hash?

将哈希值按照关键词映射到存储到存储位置。注意:怎么解决不相同的关键词而映射到相同哈希值?(压缩映射)

  • 散列函数:直接定址法,数字分析法,平方取中法,折叠法,随机数法,除留余数法
    2.解决冲突:开放地址法(固地址开放插入哈希值),拉链法(先定位桶,再相应的桶中查找),双散列(迭代哈希函数直至找到空白地址),再散列
    3.Java实现HashMap算法
    步骤:

  • HashMap map = new HashMap();

  • //构造map对象

  • map.put(“关键字”, r.nextInt(10));

  • //put关键字键和哈希值

  • Iterator iter = map.entrySet().iterator();

  • //构造entrySet构造器,通过Iterator遍历key-value

  • System.out.println("contains key two : " + map.containsKey(“two”));

  • //containsKey(Object key) :是否包含键key

  • System.out.println("contains value 0 : " + map.containsValue(new Integer(0)));

  • // containsValue(Object value) :是否包含值value

  • map.remove(“three”);// remove(Object key) :

  • //删除键key对应的键值对

  • map.clear();

  • //清空HashMap

  • System.out.println((map.isEmpty() ? “map is empty” : “map is not empty”));

  • // isEmpty() : HashMap是否为空

代码实现:

package hash;
import java.util.Map;
import java.util.Random;
import java.util.Iterator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map.Entry;
import java.util.Collection;

/*
 *  HashMap算法
 *
 *
 *
 */
class HashMapTest {

    public static void main(String[] args) {
        testHashMapAPIs();
    }

    private static void testHashMapAPIs() {
        // 初始化随机种子
        Random r = new Random();
        // 新建HashMa
        HashMap map = new HashMap();//构造map对象
        // 添加操作
        map.put("one", r.nextInt(9));
        //put关键字键和哈希值
        map.put("one", r.nextInt(9));
        map.put("two", r.nextInt(9));
        map.put("three", r.nextInt(9));

        // 打印出map
        System.out.println("map:" + map);

        // 通过Iterator遍历key-value
        Iterator iter = map.entrySet().iterator();//构造entrySet构造器
        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            System.out.println("next : " + entry.getKey() + " - " + entry.getValue());
        }

        // HashMap的键值对个数
        System.out.println("size:" + map.size());

        // containsKey(Object key) :是否包含键key
        System.out.println("contains key two : " + map.containsKey("two"));
        System.out.println("contains key five : " + map.containsKey("five"));

        // containsValue(Object value) :是否包含值value
        System.out.println("contains value 0 : " + map.containsValue(new Integer(0)));

        // remove(Object key) : 删除键key对应的键值对
        map.remove("three");

        System.out.println("map:" + map);

        // clear() : 清空HashMap
        map.clear();

        // isEmpty() : HashMap是否为空
        System.out.println((map.isEmpty() ? "map is empty" : "map is not empty"));
    }
}

二、构造

1.布隆过滤器(待续)

2.一致性哈希(待续)

总结(待续)

提示:请亲们多多关注,精彩后续,谢谢哈

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值