将方法写入地图类?

时间:2015-10-25 00:49:07

标签: java methods maps

我现在正在对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个键和值。

非常感谢你!

2 个答案:

答案 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;
 }