2011-04-25 4 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);

내가보기에 하나의 문제는지도를 수정할 수 없다는 것입니다. 그럴 가능성이 있다면 원래 엔트리 세트로 새지도를 만든 다음 필터링하고 반환하면 더 나은 옵션이 될 것입니다.

관련 문제