DESKTOP-0FT47VC_20200909-罗贤丞

问题

public V put( K key , V value ) {
        for( int i = 0 ; i < counter ; i++ ) {
            ItlaobingEntry<K,V> e = table[i] ;
            if( e.getKey() == key || e.getKey().equals( key ) ) {
                V oldValue = e.setValue( value );
                return oldValue ;
            }
        }
        ItlaobingEntry<K,V> entry = new ItlaobingEntry<>(key,value);
        table[ counter ] = entry ;
        counter++;
        return null ;
    }

if语句里面的e.getKey() == key与e.getKey().equals( key ),不应该是等效的吗?为什么两个都得写?

解决

public V put( K key , V value ) {
        for( int i = 0 ; i < counter ; i++ ) {
            ItlaobingEntry<K,V> e = table[i] ;
            K x ;
            if( ( x = e.getKey() ) == key || ( x != null && x.equals( key ) ) ) {
                V oldValue = e.setValue( value );
                return oldValue ;
            }
        }
        ItlaobingEntry<K,V> entry = new ItlaobingEntry<>(key,value);
        table[ counter ] = entry ;
        counter++;
        return null ;
    }

==可以比较null,equals不能比较null,所以两个都要写。

吐槽

公寓左手边的那个电梯的关门键总是出问题。