HashMap重写(3) 实现get()方法,根据key对象获得对应的value对象

HashMap重写(3) 实现get()方法,根据key对象获得对应的value对象
在上一篇的基础上HashMap重写(2)HashMap重写toString()方法,增加get()方法。
上代码:

/**
     * get()方法
     * @param key
     * @return
     */
    public Object get(Object key) {

        //拿到对应的hash值
        int hash = myHash(key.hashCode(), table.length);
        Object value = null;

        if (table[hash]  != null) {
            Node2 temp = table[hash];

            while (temp != null) {

                //如果相等,则说明找到了键值对,返回相应的value
                if (temp.key.equals(key)) {
                    value = temp.value;
                    break;
                } else {
                    temp = temp.next;
                }
            }

        }

        return value;
    }

具体思路是:

- 先根据key值算出hash值,定位到Entry[ ]数组;
- 然后在链表上比较key对象,调用equal() 方法,返回true节点对象;
- 遍历链表,如果没有找到key就返回null,找到了就终止循环,返回对应的value值。

测试:

 public static void main(String[] args) {
        YanHashMap01 m = new YanHashMap01();
        m.put(10, "aa");
        m.put(20, "bb");
        m.put(30, "cc");
        //测试key值相同,覆盖value是否成功
        m.put(20, "jiajia");

        //测试hash值相同的情况下,形成链表是否成功
        m.put(53, "gg");
        m.put(69, "hh");
        m.put(85, "kk");


        System.out.println(m);
        System.out.println(m.get(10));
        System.out.println(m.get(20));
        System.out.println(m.get(53));
        System.out.println(m.get(69));

    }

测试结果:
HashMap重写(3) 实现get()方法,根据key对象获得对应的value对象