JAVA哈希表

哈希表的定义

哈希表(Hash table,也叫散列表)是一种查找算法,与链表、树等算法不同的是,哈希表算法在查找时不需要进行一系列和关键字的比较操作。
哈希表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,因而必 须要在数据元素的存储位置和它的关键字(可用key表示)之间建立一个确定的对应关系,使每个关键字和散列表中一个唯一的存储位置相对应。因此在查找时,只要根据这个对应关系找到给定 关键字在散列表中的位置即可。这种对应关系被称为哈希函数(可用H(key)表示)

哈希函数的构造方法

常用的哈希函数构造方法有:直接定址法、数字分析法、平方取中法、折叠法、随机数法和除留余数法。

处理冲突的方法:

  1. 开放定址法

  2. 链地址法

  3. 再哈希法

  4. 建立一个公共溢出区

Hashtable的基本操作

hashtable的初始容量是101
hashtable是线程安全的,put( ),remove( )方法等都有synchronized,所有效率不如hashmap。

public class Hashdemo {
     
    public static void main(String[] args) {
     
        Hashtable<Integer,String> hashtable=new Hashtable<>();
        //存储键值对,键和值都不允许为空
        hashtable.put(3,"张三");
        hashtable.put(4,"李四");
        hashtable.put(5,"王五");
        hashtable.put(6,"赵六");
        System.out.println(hashtable);
        //判断哈希表是否包含给定关键字
        System.out.println("key:2 :"+hashtable.containsKey(2));
        System.out.println("key:3 :"+hashtable.containsKey(3));
        //判断哈希表是否包含给定的对象
        System.out.println("value:张三 :"+hashtable.contains("张三"));
        System.out.println("value:小明 :"+hashtable.contains("小明"));
        //根据关键字删除对象
        hashtable.remove(4);
        System.out.println("after remove"+hashtable);
        //遍历哈希表
        Iterator<Integer> iterator=hashtable.keySet().iterator();
        while (iterator.hasNext()){
     
            Integer key=iterator.next();
            System.out.println(key+"--"+hashtable.get(key));
        }
    }
}

你可能感兴趣的:(数据结构,算法,数据结构,java,哈希表)