如何从HashMap中删除“Null”键<string,string =“”>?

时间:2016-12-19 05:48:46

标签: java hashmap

根据Java,HashMap允许Null为关键。我的客户说

  

仅使用HashMap,而不是像HashTable,ConcurrentHashMap等其他编写逻辑,这样HashMap不会   在我的整体产品逻辑中包含Null作为键。

我有像

这样的选项
  1. 创建HashMap的包装类并在任何地方使用它。

    import java.util.HashMap;
    
    public class WHashMap<T, K> extends HashMap<T, K> {
        @Override
        public K put(T key, K value) {
            // TODO Auto-generated method stub
            if (key != null) {
                return super.put(key, value);
            }
            return null;
        }
    
    }
    
  2. 我建议另外一个选项,比如手动删除空键或不允许每个选项。也不允许重复相同的操作。

  3. 让我知道..如果我错过了其他更好的方法吗?

  4. 仅根据java标准将HashMap与Null一起使用。

  5. 让我知道处理此类案件的好方法是什么?

2 个答案:

答案 0 :(得分:5)

按如下所示更改put方法实现

        @Override
        public K put(T key, K value) {
            // TODO Auto-generated method stub
            if (key == null) {
              throw new NullPointerException("Key must not be null.");
            }
            return super.put(key, value);
        }

答案 1 :(得分:3)

您的代码是创建无法包含空键的HashMap的合理方式(尽管它并不完美:如果有人调用putAll并传入地图会发生什么一个空键?);但我不认为这是你的客户所要求的。相反,我认为你的客户只是说他希望你创建一个包含空键的HashMap(即使它可以)。如同,(s)他只是希望你确保程序逻辑中的任何内容都不会在地图中放入空键。