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,所以两个都要写。
吐槽
公寓左手边的那个电梯的关门键总是出问题。
近期评论