我现在正在对MapClass
进行编码,但我似乎无法找出put
方法。这就是我到目前为止所做的:
public V put(K key, V value)
{
for(MapEnt<K,V> x:data)
{
if(x.getKey().equals(key))
{
V reval = x.getValue();
x.setValue(value);
return reval;
}
else
{
}
}
return null;
}
我无法在其他地方添加条目。我有ArrayList
个键和值。
非常感谢你!
答案 0 :(得分:0)
没什么(即删除else
部分)。如果在列表后面找到带有适当密钥的条目,您不想做任何事情。
在循环后,您需要添加一个新条目,因为您知道条目列表中没有相应键的条目。
BTW:如果您想让密钥为null
,请使用Objects.equals
检查相等性,而不是调用equals
(这可能会产生NullPointerException
)
答案 1 :(得分:0)
有更好的方法可以做到这一点(细节取决于您正在实施的地图类型)。然而,这可能是你要求的。
// Returns matching value or null if no value exists for this key.
public V put( K key, V value )
{
V existingValue = null;
// The downside of this for each loop is that it will iterate through all
// entries, even if a match is found part way through.
for ( MapEnt<K, V> x : data )
{
if ( x.getKey().equals( key ) )
{
// Match found.
existingValue = x.getValue();
x.setValue( value );
}
}
if ( existingValue == null )
{
// No match was found. add new entry (exactly where you add it will
// Depend on the type of map you are implementing.
}
return existingValue;
}