2011-05-05 2 views
0

null 키가있는 특수 값이 포함 된 Map<String,String>이 있습니다. 나는 그것을 가지지 않기 때문에 일을 바꾸는 것이 그렇게 쉽지 않습니다.java : null 키를 사용하여 항목을 숨기는지도보기?

중 하나를 할 수있는 방법이 있나요 다음 :

  • 도 널 키 입력
  • 의 전망을 숨 깁니다 Map<String,String> 인이지도의 전망을지도의 keySet()하는 null 키 항목을 숨 깁니다.

"보기"는지도의 변경 사항이보기에서 변경을 초래한다는 의미입니다.

나는 후자가 더 쉽다고 생각하지만 어떻게해야할지 모르겠다.

+0

제목에 "java"를 유지하십시오. 나는 "관련있는"질문이나 질문을 검색 한 횟수를 말할 수없고 매우 유망한 것으로 들리지만 질문은 내가 배워야 할 언어와 다른 언어를 나타냅니다. –

답변

0

구아바의 Maps.filterKeys(); 그것은 잘 작동했다.

Maps.filterKeys(mymap, new Predicate<String>() { 
    @Override public boolean apply(String key) { return key != null; } 
}), 
0

간단한 방법은 맵을 확장하고 null 키 값을 확인하는 적절한 메소드를 대체하는 것입니다. 이들은 다음과 같습니다 또한지도를 확장 자신의 개체를 구현하고 생성자에지도-와 널을 통과하고 위의 방법 중 하나가 호출 될 때 체크/제어를 수행 할 수

containsKey(Object key) 
entrySet() 
get(Object key) 
keySet() 
put(K key, V value) 
putAll(Map<? extends K,? extends V> m) 

.

외부 라이브러리가 열려있는 경우 PredicatedMap을 살펴볼 수 있습니다.

0

null 키를 사용하는 값이 특별한 경우이며 항목에 액세스 할 때 사용되지 않는 경우지도에 표시된 이유는 무엇입니까? 다른 문자열 변수 대신지도에 넣기로 결정한 이유가 있습니까?

지도를 확장하여이 사례에 대한 몇 가지 특수한 특성을 갖기보다는 다른 접근법을 사용하는 것이 더 쉬운 것처럼 들립니다. 이것은 또한이 문자열 값이 특수 값이고 나중에이 코드를 살펴 봐야하는 미래 개발자를 끌어들일 수있는 것이 아니라는 것을보다 분명하게 나타낼 것입니다.

관련 문제