`
zhouyancheng
  • 浏览: 7240 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

hash

阅读更多
hash总结:
在这一阶段 我们主要学习到了关于hash方面的知识,要讲hash我们首先就要回顾一下以前学过的集合,集合包括三类
分别是hashlist,hashset和hashmap

hashlist:hashlist和以前学的数组的本质是一样的,不同于hashset,他可以存储两个或两个以上的元素。


hashset:hashset中不能存储重复的信息,也就是说,在hashset找不到两个内容相同的对象,且在本质上hashset只是
封装了一个hashmap对象来存储所有的集合元素,所有放入hashset中的元素实际上是由hashmap的key来保存,而hashmap的value
则存储了一个present,他是一个静态的Object对象,一下是关于hashset的一段代码:




public void search(Collection set,int score){
System.out.println("学分为"+score+"的学生======================>");

//给集合添加迭代器
        Iterator<Student> it=set.iterator();
        //循环输出集合元素
        while(it.hasNext()){
        Student stu=it.next();
        if(stu.getScore()==score){
        System.out.println("学生:"+stu.getName()+" 学分:"+stu.getScore());
       
        }
        }
      
}




hashset的绝大部分的方法都是通过调用hashmap的方法来实现的,因此hashset和hashmap两个集合在实质本质上是相同的。
        特别注意,这里由于hashset中存储的内容是无序的,因此在遍历hashset的时候需要使用迭代器。

hashmap:  hashmap是通过映射的关系来存储元素的,例如,每个人有一张省份证,但是每张省份证上有一个省份证号码,这里的每一个
    号码则代表着一个人,又如在数学中的函数的对应关系,每一个变量都会对应唯一的一个解值,在hashmap中我们的key值就相当于
    省份证的号码,后面的value则表示省份证上对应的那个人,即我们要找的那个元素。
    下面是遍历map的一个方法:


     public void printmap(Map<String,Student> um){
             //得到map中所有key的集合

                java.util.Set<String> set=um.KeySet();
             kava.util.Iterator<String> it=set.iterator();
             //迭代key
             while(it.hasNext){
                  String key=it.next();
                  //取出key对应的value
                  Student uf=um.get(Key)
                  uf.showInfo();//showInfo表示一个打印uf对象的一些属性的方法,这里不给出。
               }
        }


  从上面的代码可以看出,在map中,是通过使用key的值来标记要存储的对象,在查找的时候从而跟方便快捷。




我要说的hash: 我们现在所说的hash其实就是在一个数组,然后再数组的元素空间里加入链表从而形成了我们现在使用的hash结构

              下面就是哈希结构的示意图:
[img][/img]http://image.baidu.com/i?ct=503316480&z=&tn=baiduimagedetail&word=hash%E7%BB%93%E6%9E%84%E7%9A%84%E7%A4%BA%E6%84%8F%E5%9B%BE&ie=utf-8&in=22106&cl=2&lm=-1&st=&pn=1&rn=1&di=16116760451&ln=487&fr=&fm=&fmq=1353336822922_R&ic=&s=&se=&sme=0&tab=&width=&height=&face=&is=&istype=#pn1&-1&di16116760451&objURLhttp%3A%2F%2Fwww.linuxgraphics.cn%2Fimages%2Fgui%2Fhashqueue.png&fromURLhttp%3A%2F%2Fwww.linuxgraphics.cn%2Fgui%2Fcache_buf.html&W501&H225&T9589&S6&TPpng

在这里我们也可以把hash结构看成一个hashlist和hashmap的结合,hashlist即上图中的垂直方向第一排的方格,每个方格
         表示数组中的一个元素空间,然后将hashmap对象的key值通过取值函数(例如取值函数(key)MOD(10),即把key值对十取余)计算得到
         的就是数组中的下标,通过这个下标,我们就可以吧hashmap中value对应的对象存入这个下标上的链表。
下面给出一段代码:



public void add(Node qq) {
     Node node = null;
int loc = cacu(qq);

if (list_array[loc] == null) {
            list_array[loc] = qq;
length++;
System.out.println("加入了元素$$$$$$$$$$" + list_array[loc].get_number()+list_array[loc].get_obj());
} else if (list_array[loc] != null) {
node = list_array[loc];
while (node != null) {
node = node.getNext();
}
node = qq;
length++;
System.out.println("加入了元素++++++++" + node.get_number());
node.setNext(null);

}
}
这是往hash结构添加节点元素的方法,我们是先通过get_number()获取相当于key的值,然后计算下标,若改下标下的空间没有元素,即直接把元素加到数组里边去,否则添加在已有链表的队尾。

下面还附有wps文档的附件。
分享到:
评论

相关推荐

    hashcat for windows

    Hashcat is the self-proclaimed world's fastest password recovery tool. It had a proprietary code base until 2015, but is now released as free software. Versions are available for Linux, OS X, and ...

    各种Hash函数(JAVA版)

    RS-Hash Function Value: " + ghl.RSHash(key)); System.out.println(" 2. JS-Hash Function Value: " + ghl.JSHash(key)); System.out.println(" 3. PJW-Hash Function Value: " + ghl.PJWHash(key)); System....

    geohash-1.3.0.jar

    1)GeoHash用一个字符串表示经度和纬度两个坐标,比如我现在所在位置的GeoHash值为 wx4sv61q; 2)GeoHash标识的并不是一个点,而是一个区域,比如 wx4sv61q 对应的就是一个矩形区域; 3)编码的前缀可以标识更大...

    C开源hash代码uthash

    uthash 是C的比较优秀的开源代码,它实现了常见的hash操作函数,例如查找、插入、删除等待。该套开源代码采用宏的方式实现hash函数的相关功能,支持C语言的任意数据结构最为key值,甚至可以采用多个值作为key,无论...

    高运算性能,低碰撞率的hash算法MurmurHash算法.zip

    MurmurHash算法由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc 、nginx、libmemcached,Redis,Memcached,Cassandra,HBase,Lucene等开源系统。2011年Appleby被Google雇佣,随后Google推出其变种的...

    shiro-crypto-hash-1.4.0-API文档-中文版.zip

    赠送jar包:shiro-crypto-hash-1.4.0.jar; 赠送原API文档:shiro-crypto-hash-1.4.0-javadoc.jar; 赠送源代码:shiro-crypto-hash-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-crypto-hash-1.4.0.pom; ...

    uthash开源的hash函数实现

    uthash开源的hash函数实现,里面的uthash.h可用

    mysql_hash.exe/使用hash登陆mysql

    在获取到mysql用户的hash后, 可用hash直接登陆mysql进行操作 比如我们注入出数据库的hash,但是没办法拿到webshell 我们可以使用mysql_hash,用hash登陆并控制数据库 使用方法: mysql_hash.exe -u root -p Enter ...

    MurmurHash64B c#版

    这是MurmurHash算法,由c++改成c#版本。使用它在生500万内生成64位的数字,也是会出现碰撞的。在实际开发转,可能需要将不定长的数符中转生数字,想转生64位唯一数字的话。可以用md5算法生成16位的字节,再用Murmur...

    aHash 是一种使用 AES 硬件指令的非加密哈希算法_rust_代码_下载

    AHash 是目前 Rust中最快的、 抗 DOS 的哈希。AHash专门用于内存中的哈希映射。 AHash 的输出质量很高 因为AHash是keyed hash,每个map会产生完全不同的hash,不知道key是无法预测的。 这可以防止 DOS 攻击,其中...

    HASH_hash_stm32hash_stm32hash表_stm32f407_

    stm32f407平台上实现的hash算法

    hashcat-6.2.6(hash爆破工具)

    内容描述:用于crypto中hash爆破的强大工具。 优势:相较于其他hash工具,具有更快的算力,使用方便简洁。 适用:适用于md5,sha256等典型hash加密方式,反推出所需的源码。

    Hash函数与消息认证

    hash函数与消息认证讲义 包括 5.1 Hash函数概述 5.1.1 Hash函数定义 5.1.2 Hash函数的安全性 5.1.3 Hash函数的迭代构造法 5.2 Hash函数MD5 5.2.1 MD5算法 5.2.2 MD5的安全性 5.3 安全Hash算法SHA-1 5.3.1 SHA-1...

    3d.zip_3维hashin准则_Hashin 3D_hashin_失效准则_层合板 hashin

    3维hashin失效准则~复合材料层合板

    利用Hash技术统计C源程序中关键字的频度

    设Hash函数为:Hash(Key)=[(Key的首字母序号)*100+(Key的尾字母序号)] Mod 41。关键字39个,参考C语言教材。 二、数据结构设计 ①关键字表的存储结构;②Hash表中的结点结构。频度、冲突次数 三、功能设计 ①从一个...

    hash join算法原理

    Hash join算法的一个基本思想就是根据小的row sources(称作build input,我们记较小的表为S,较大的表为B) 建立一个可以存在于hash area内存中的hash table,然后用大的row sources(称作probe input) 来探测前面所建...

    Hash在线解密_Hash在线解密_Hash在线解密平台最新版_hash解密_hash.txt_mysql5在线解密_

    Hash在线解密平台最新版php实现纯txt存储哈希跟明文对应表查询

    hashcat [hashcat wiki].rar

    hashcat is the world’s fastest and most advanced password recovery tool. This version combines the previous CPU-based hashcat (now called hashcat-legacy) and GPU-based oclHashcat. Hashcat is ...

    地理坐标 GEOHASH示例代码 geohash.zip

    项目中使用的 GEOhash 算法, 在网上公开的GEOhash demo基础上, 做了升级, 功能: 1. 根据指定坐标生成 GEOhash对象 2. 根据当前坐标(GEOhash对象)获取周边8/9个GEOhash对象 3. [升级]根据当前坐标获取指定半径...

    HASHIN.rar_ABAQUS_Hashin失效准则 abaqus_abaqus hashin_abaqus 三维Hashi

    abaqus用户子程序,Hashin失效准则,abaqus显示分析,使用三维实体单元

Global site tag (gtag.js) - Google Analytics