2013-06-28 2 views
1

값이 해시 테이블의 값 사이에 있는지 확인하는 방법은 무엇입니까? 값이 값은 키 또는 값값이 해시 테이블의 키와 값 사이에 있는지 확인하십시오.

로서 존재하는지 확인하기 위해 I는 다음과 같은 코드를 사용

키 중 그 값의 해시 테이블 또는 존재한다면

제가 확인하고자

if(table.containsKey(val) || table.containsValue(val)) 

그러나 키와 해당 값 사이에 키가 있는지 확인하는 방법은 무엇입니까?

+2

"* in be 트위닝 키와 해당 값 * "? – assylias

+0

@ user2133404 반복기 문제와 같은 것처럼 보입니다. 당신이 그들을 사용하는 방법을 안다면. – ha9u63ar

+0

값이 6 인 경우를 가정하십시오. 해시 테이블에 키 5와 값 8이 있으면 true를 반환해야합니다. – user2133404

답변

1

기본적으로지도를 평평하게하고 주어진 값이 가장 낮은 키 또는 값과 가장 큰 키 또는 값 사이의 범위에 포함되어 있는지 확인하려고합니다.

당신은 예를 들어 가장 낮은/높은 항목을 검색 할 first()last() 방법이있는 TreeSet 위해, a SortedSet에있는 모든 키와 값을 넣을 수 있습니다.

은 다음과 같이 수 :

SortedSet<Integer> set = new TreeSet<>(); 
set.addAll(map.keySet()); 
set.addAll(map.values()); 

//return true if input within the range 
return (input >= set.first() || input <= set.last()); 

당신은 모든 쿼리에 대한 설정을 다시 방지하기 위해 효율성을위한지도 병렬 세트를 채울 수 있습니다.

+0

감사합니다. 작동했습니다 :) – user2133404

0

이 시도

  1. 으로 반복 해시 테이블
  2. 저장
  3. 는 그 다음 tempkey 사이의 값을 비교 DIFF 온도의 키와 값이 또한 작동 tempvalue
0

:

public static <T extends Comparable> boolean hasValueBetween(Map<T, T> map, T value) { 
    for(Map.Entry<T, T> entry : map.entrySet()) { 
     if (entry.getKey().compareTo(value) <= 0 && entry.getValue().compareTo(value) >= 0) { 
      return true; 
     } 
    } 

    return false; 
} 
관련 문제