簡體   English   中英

如何從HashMap中刪除“Null”鍵 <String, String> ?

[英]How to remove “Null” key from HashMap<String, String>?

根據Java,HashMap允許Null為關鍵。 我的客戶說

僅使用HashMap ,而不是像HashTable,ConcurrentHashMap等其他編寫邏輯,這樣HashMap在我的整體產品邏輯中不包含Null作為Key。

我有一些選擇

  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

讓我知道處理此類案件的好方法是什么?

更改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);
        }

您的代碼是創建不能包含空鍵的HashMap的合理方法(盡管它並不完美:如果有人調用putAll並使用null鍵傳入映射會發生什么?); 但我不認為這是你的客戶所要求的。 相反,我認為你的客戶只是說他希望你創建一個包含空鍵的HashMap(即使它可以 )。 就像在(s)中一樣,他只是希望你確保程序邏輯中的任何內容都不會在地圖中放置空鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM