Java HashMap分析及其它

来源:互联网 发布:html5编程软件 编辑:程序博客网 时间:2024/06/05 02:36

首先来了解下Hashcdoe

1.对于字符串来说( ==表示对象是否相等,.equal表示内容是否相等)重写了hashcode()方法,因此只要内容相等hashcode也相等.

2.对于其它对象来说,不同对象可能有相同Hashcode,而对象相等的话则hashcode一定相等.


在有些情况下,程序设计者在设计一个类的时候为需要重写equals方法,比如String类,但是千万要注意,在重写equals方法的同时,必须重写hashCode方法。为什么这么说呢?

是那些情况呢,便是若用HashMap存储对象或者底层使用到HashMap的数据结构(如HashSet),因为HashMap中对象的唯一性有两个判断条件,一个是内容(.equal),一个是HashCode,


那如何重写HashCode方法呢,通常是类中的一个具有唯一性的字符串如

 public int hashCode() {
        // TODO Auto-generated method stub
        return name.hashCode()*37+age;
    

对象是一个人,这个人的name具有唯一性,而开头我们也说过相同内容的String具有相同的HashCode


哈希表的时间复杂度问题

存储的时间复杂度为O(1)

查询的时间复杂度为O(1)(相当于数组存储,Hash码相当于一个指针直接指向内存)

因为HashMap实际上是用一个数组实现




存储的时间复杂度为O(1)
0 0