MR-LI_20200909-李伟江

问题

if( entry.getKey() == key ||  entry.getKey().equals( key ) )

刚开始觉得,这里的 equals 方法是 Object 类的,没有重写的。点进去也是 Object 类的 equals 方法。所以同样都是 == 比较,为什么还要写 equals 方法呢。

后来细细捋了一下。entry.getKey() 的值,是不同的参数类型。今天的例子是String类型,所以equals方法被重写了,可以用equals方法进行对象的比较。

代码证明如下

    public boolean compare( K one , K two ) {
        return one.equals( two );
    }
    FruitsMap<Product, Integer> map = new FruitsMap<>(); //Product类没有重写equals方法
    Product a = new Product("泡面" , 5);
    Product b = new Product("泡面" , 5);
    System.out.println( map.compare( a , b ) );
输出结果为false

所以 equals 方法的判断,取决于参数类型。如果这个参数类型重写了 equals 方法,那么判断结果为 true,否则就是 Object 类提供的 equals 方法。

吐槽

今天问四营的,HashMap 能不能用迭代器进行迭代。人家说可以,我说不可以。人家说 set 一下就可以了。

我说那是遍历的set,和 HashMap 有什么关系。最后还是没说动人家。

最重要的是,祝佟姐姐和老韩同学教师节快乐啊。心想事成,越来越年轻。😁😁😁😁😁😁😁😁😁😁