2011-04-25 72 views
3

我想將過濾器應用於地圖。目的是隻保留那些屬於一個集合的鍵。以下實現提供了所需的結果,但我想知道這是否正確?我可以修改通過鍵集的地圖嗎

private void filterProperties(Map<String, Serializable> properties, Set<String> filterSet) { 
    Set<String> keys = properties.keySet(); 
    keys.retainAll(filterSet); 
} 

回答

2

Itay's answer是正確的,但是你應確保properties未被其他線程修改,或者本身是線程安全的Map實現。

如果Map是不是線程安全的(例如,HashMap中),並通過其他線程你可能會得到ConcurrentModificationException修改。

0

你的代碼看起來不錯。你可以寫一行爲properties.keySet().retainAll(filterSet);

我看到的一個問題是地圖可能是不可修改的。如果這是一種可能性,那麼可能用原始條目設置一個新地圖,然後過濾並返回它將是一個更好的選擇。

相關問題