2011-03-08 3 views
4

HashMap<String, String>에 항목 (키, 값)이 value = "x"로 포함되어 있는지 확인하고 순차적으로 모든 항목을 검색 할 수 있습니까? 이 HashMap가 처음에 대한을 만든 것입니다HashMap에 선택된 값이 들어 있는지 확인하고 키를 반환하십시오

+1

먼저지도 인터페이스를 살펴보십시오. –

+2

질문을 반대로 바꾸면 수정 된 질문이나 기존 답변이 모두 이상하게 보일 것입니다. –

+0

[가능한 중복 : 주어진 상세한 설명] [1] [1] : http://stackoverflow.com/questions/1383797/java-hashmap-how-to-get-key-from-value – cryptickp

답변

8

HashMap.containsKey()

...

이 가

(당신은하지만, "순차적으로 모든 항목을 통과하는"무슨 뜻인지 확실하지. 단지 하나있다 키 당 항목)


편집 :. 당신이 편집 이제

질문에 대한 대답은 아니요입니다! 당신이 그 기능을해야하는 경우 :(

는, 그 클래스를 (감각을 만들어 희망)의 다른 값의 각 값의 위치를 ​​저장하는 자신의 양방향 HashMap을 설계 한 다음 사용한다. HashMap들에 대한 설계되지 않았습니다 그것은 주어진 키를 누릅니다. 사용 HashMap.keySet() 또는 HashMap.entrySet() 항목 또는 값의 컬렉션을 retreive 그 위에 순차적으로 반복하는이 포함 된 경우이.

0

사용 HashMap.containsKey는() 알고 있습니다.

1

일반적인 패턴을 사용합니다.

if(hashMap.containsKey(key)) { 
    Object o = hashMap.get(key); 

} 

그러나 null 값이 없음을 알고있는 경우 (많은 맵 콜렉션이 널을 허용하지 않음)보다 효율적으로 다음을 수행 할 수 있습니다.

Object o = hashMap.get(key); 
if (o != null) { 

} 

은 BTW : containsKey는

Set<Key> keys = hashMap.keySet(); 
boolean containsKey = keys.contains(key); 
+0

Er ...'HashMap'에'contains'? 그 중 하나가 새로운 것입니다 ... – Mehrdad

+0

@Mehrdad, 당신이 맞아요, 그 containsKey, 세트와 혼동. ;) –

0
당신은 당신이 찾고있는 정보를 찾을 수

과 동일하지만, 비효율적 :

Object key; 
Object val; 
HashMap hm = new HashMap(); 
for (Iterator iter = hm.entrySet().iterator(); iter.hasNext();) { 
    Map.Entry e = (Map.Entry) iter.next(); 
    if (key.equals(e.getKey()) && val.equals(e.getValue())) { 
    // do something 
    } 
} 

의 일부에서 제안으로 다른 해답을 찾으려면 해결하려는 문제에 대해 더 나은 데이터 구조를 고려해야합니다.

4

에서, containsValue() 방법이 있지만, 일반적인 구현을하고 그들을 비교 매개 변수.

관련 문제