是否只写一张地图?

时间:2014-11-17 15:14:13

标签: java

是否有相当于NullWriter的地图? http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/output/NullWriter.html

我写了下面的内容,但标准实现会更好:

import java.util.Collection;
import java.util.Map;
import java.util.Set;

    /**
    * a "write only " that discards all values. Useful as a place holder for 
    * optional usage of a real map
    *
    * @param <K>
    * @param <V>
    */
    public class NullMap<K, V> implements Map<K, V> {

    public NullMap() {
    }

    @Override
    public int size() {
        return 0;
    }

    @Override
    public boolean isEmpty() {
        return true;
    }

    @Override
    public boolean containsKey(Object key) {
        return false;
    }

    @Override
    public boolean containsValue(Object value) {
        return false;
    }

    @Override
    public V get(Object key) {
        return null;
    }

    @Override
    public V put(K key, V value) {
        return null;
    }

    @Override
    public V remove(Object key) {
        return null;
    }

    @Override
    public void putAll(Map<? extends K, ? extends V> m) {

    }

    @Override
    public void clear() {
    }

    @Override
    public Set<K> keySet() {
        throw new UnsupportedOperationException("Null map");
    }

    @Override
    public Collection<V> values() {
        throw new UnsupportedOperationException("Null map");
    }

    @Override
    public Set<java.util.Map.Entry<K, V>> entrySet() {
        throw new UnsupportedOperationException("Null map");
    }
}

添加:在某些情况下,我希望记录一些数据供以后使用,在某些情况下我不会。而是用丑陋的代码加密代码

if (map != null) {
    map.put("frick","frack");
}

我更喜欢写作

map.put("frick","frack");

如果将map分配给NullMap,则抛弃数据。

1 个答案:

答案 0 :(得分:4)

不是我所知,但可以通过从TreeMap或HashMap扩展来使生活更轻松。

public class BulimiaMap<K, V> extends HashMap<K, V> {

    @Override
    public V put(K key, V value) {
        return null;
    }