我有一個Map<String,String>
它包含一個特殊的值與一個空鍵。改變事情並不那麼容易,所以我沒有這個。java:映射視圖,用null鍵隱藏條目?
有沒有辦法做到以下任一操作:
- 使這個地圖,這也是一個
Map<String,String>
其隱藏空鍵輸入 - 做出的視點的視點地圖的
keySet()
這隱藏空密鑰條目
「查看」我的意思是說,地圖上的變化會在視圖中產生變化。
我認爲後者更容易,但我不知道該怎麼做。
我有一個Map<String,String>
它包含一個特殊的值與一個空鍵。改變事情並不那麼容易,所以我沒有這個。java:映射視圖,用null鍵隱藏條目?
有沒有辦法做到以下任一操作:
Map<String,String>
其隱藏空鍵輸入keySet()
這隱藏空密鑰條目「查看」我的意思是說,地圖上的變化會在視圖中產生變化。
我認爲後者更容易,但我不知道該怎麼做。
我用番石榴的Maps.filterKeys()
;這工作得很好。
Maps.filterKeys(mymap, new Predicate<String>() {
@Override public boolean apply(String key) { return key != null; }
}),
簡單的方法是擴展您的映射並覆蓋正確的方法來檢查空鍵值。這些將是:
containsKey(Object key)
entrySet()
get(Object key)
keySet()
put(K key, V value)
putAll(Map<? extends K,? extends V> m)
你也可以實現自己的目標擴展地圖,並通過您的地圖,與空在構造和執行檢查/控制時的上述方法之一被調用。
如果您對外部圖書館開放,您可以查看PredicatedMap。
如果使用null鍵的值是特殊情況,並且在您訪問條目時不打算使用它,爲什麼它在地圖中?是否有一個原因,你決定把它放在地圖上,而不是有不同的字符串變量?
聽起來好像使用不同的方法會比較容易,而不是試圖擴展地圖來爲這種情況提供一些特殊的屬性。這也將更明確地表明,這個字符串值是一個特殊的值,而不是那些可能會讓未來的開發人員在你之後看到這個代碼。
請保留「java」的標題。我無法告訴你有多少次我在「相關」下搜索過問題或看到過問題,這聽起來很有希望,但問題指的是與我需要了解的不同語言 – 2011-05-05 17:17:29