• HashTable, HashSet, HashMap的区别


    HashTable, HashSet, HashMap的区别
     
     
    hash是一种很常见也很重要的数据结构,是用hash函数根据键值(key)计算出存储地址,以便直接访问。由完美hash函数(即键值和地址是一一对应的)计算出的地址,在访问时,时间复杂度为O(1)。
    Java的Object对象提供了hashCode()这个方法,该方法返回一个hash值。对于变量,该方法一般返回该变量的内存地址。在使用java的HashMap对象时,该方法和equals()方法一起使用,要确保equals()返回true时,hashCode()能返回同样的值;实现这点,一般要重写对象的hashCode()与equals()方法。
    关于hash,java提供了三个类HashMap, HashSet, HashTable,他们的区别如下:
    1>. HashSet、HashTable实质是使用HashMap实现的;
    2>. 在HashSet中,有如下定义:
     
    private final static Object temp = new Object();  
     
    boolean add(Object obj){  
     return map.put(obj, temp) == null;  
           即插入HashSet中的值,为HashMap中的key,所有的key对应的value均为temp。
    3>.
    HashMap 没有排序,允许一个或者多个null值,而Hashtable不允许;
    HashMap把Hashtable的contains方法去掉了,改成了containsValue与containsKey,因为contains方法让人引起误解; 
     
     4>. HashTable继承于Dictionary类,与HashMap的主要的不同是HashTable是同步的(synchronize)并且不允许null值操作(key 和value均不能为null);在多线程访问时,不需要为他的方法实现同步,而HashMap必须为之提供外同步。
     
  • 相关阅读:
    点餐网站学习(EF+MVC)SEO站内结构
    点餐网站学习(EF+MVC)EF工具,自动创建模型并建立数据库映射关系
    个性化定制cms介绍
    EasyUI Munubutton 二级菜单
    程序员也是文艺青年
    EasyUI combobox加入请选择 [.net后台代码]
    LVS配置记录
    查询MYSQL库表使用空间
    python django 数据库操作
    Nginx修改版本信息或隐藏版本号
  • 原文地址:https://www.cnblogs.com/HRuinger/p/6109614.html
Copyright © 2020-2023  润新知