Hashtable之哈希表一

开心一笑

开心一下啦

一天,牛给驴出了一个难题,问“蠢”字下面两只虫子哪只是公的,哪只是母的。驴绞尽脑汁,还是答不上来。牛骂道:真是头蠢驴,男左女右嘛!

提出问题

Hashtable类的简单介绍???

解决问题

中文名:哈希表,英文名:Hashtable,我是一个很严肃的person,喜欢用数据说话,
说白了,我就是一种数据结构,你们可以快速插入和查找数据。都说我长的抽象,下面让你们看看简单的我吧。

//源码
public class Hashtable
    extends Dictionary
    implements Map, Cloneable, java.io.Serializable {

例一:我最常见的例子是以学生学号为关键字的成绩表,1号学生的记录位置在第一条,10号学生的记录位置在第10条...

例二:


Hashtable之哈希表一_第1张图片
这里写图片描述

由上面的计算方法便得到下面一张哈希表:


Hashtable之哈希表一_第2张图片
这里写图片描述

Hashtable()

其实可以把我理解成一个篮子,我会构建一个可以装11个(初始容量 11) 和加载因子为 (0.75) 的空哈希表。

Hashtable(int initialCapacity)

用指定初始容量和默认的加载因子 (0.75) 构造一个新的空哈希表。

Hashtable(int initialCapacity, float loadFactor)

用指定初始容量和指定加载因子构造一个新的空哈希表。

Hashtable(Map < ? extends K, ? extends V> t)

构造一个与给定的 Map 具有相同映射关系的新哈希表。

解释下加载因子:加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度,说白了,就是当篮子容量达到0.75时,赶紧扩容

put(K key, V value)

将指定 key 映射到此哈希表中的指定 value,键和值都不可以为 null

get(Object key)

返回指定键所映射到的值,如果此映射不包含此键的映射,则返回 null.
更确切地讲,如果此映射包含满足 (key.equals(k)) 的从键 k 到值 v 的映射,则此方法返回 v;否则,返回 null。

import java.util.Hashtable;

/**

 * Created by IYI on 2016/2/28.
 */
public class HashTableTest {

    public static void main(String[] args) {
        Hashtable hashtable = new Hashtable();
        //放一个key为lan,value为1,到篮子里
        hashtable.put("lan","1");
        //再放一个key为lan,value为2,到篮子里
        hashtable.put("lan","2");
        System.out.println(hashtable.get("lan"));
        //result:2,说明key相同,会覆盖掉
    }
}

remove(Object key)

从哈希表中移除该键及其相应的值

size()

返回此哈希表中的键的数量。

clear()

将此哈希表清空,使其不包含任何键

contains(Object value)

测试此映射表中是否存在与指定值关联的键

containsKey(Object key)

测试指定对象是否为此哈希表中的键

containsValue(Object value)

如果此 Hashtable 将一个或多个键映射到此值,则返回 true

import java.util.Hashtable;

/**
 * Created by IYI on 2016/2/28.
 */
public class HashTableTest {

    public static void main(String[] args) {
        Hashtable hashtable = new Hashtable();
        //放一个key为lan,value为1,到篮子里
        hashtable.put("lan","1");
        //再放一个key为lan,value为2,到篮子里
        hashtable.put("yi","2");
        hashtable.put("坏蛋one","3");
        hashtable.put("坏蛋two","4");
        System.out.println(hashtable.size());//result:4
        hashtable.remove("坏蛋one");
        boolean haveBedEgg =  hashtable.contains("2");//result:true
        System.out.println(haveBedEgg);
        haveBedEgg = hashtable.containsKey("坏蛋one");//false
        System.out.println(haveBedEgg);
        boolean haveTwo =  hashtable.containsValue("2");//true
        System.out.println(haveTwo);
        System.out.println(hashtable.size());//result:3
        hashtable.clear();
        System.out.println(hashtable.size());//result:0
    }
}

elements()

返回此哈希表中的值的枚举

entrySet()

返回此映射中包含的键的 Set 视图

keys()

返回此哈希表中的键的枚举

keySet()

返回此映射中包含的键的 Set 视图

import java.util.Enumeration;
import java.util.Hashtable;

/**
 * Created by IYI on 2016/2/28.
 */
public class HashTableTest {

    public static void main(String[] args) {
        Hashtable hashtable = new Hashtable();
        //放一个key为lan,value为1,到篮子里
        hashtable.put("lan","1");
        //再放一个key为lan,value为2,到篮子里
        hashtable.put("yi","2");
        hashtable.put("坏蛋one","3");
        hashtable.put("坏蛋two","4");

        Enumeration enumeration =  hashtable.elements();
        while(enumeration.hasMoreElements()){
            System.out.println(enumeration.nextElement());
        }

    }
}

优秀文章

http://blog.csdn.net/chenssy/article/details/22896871

个人感悟

  • 编程思想的最高境界:将事情做到极致

你可能感兴趣的:(Hashtable之哈希表一)