2014-06-17 5 views
-3

나는 같은 해시 맵 정의가 :목록을 포함하는 해시 맵의 모든 값을 값으로 검색하는 가장 좋은 방법은 무엇입니까?

Map<String, List<String>> map = new HashMap<String, List<String>>(); 

지도는 키 이름 인 검색 기능에 사용되는, 값은 그 이름에 관한 모든 키워드의 목록입니다. 키워드는 반드시 각 이름에 대해 고유해야하는 것은 아닙니다.

목록에 저장된 모든 키워드를 검색하는 가장 빠른 방법은 무엇입니까?

답변

0

구조를 사용하면 가장 빠른 방법은 없습니다. 당신은 오직 하나의 길을 가지고 있습니다 - 키를 받으면 그 키에 대한 키워드 목록을 얻으십시오. 그런 다음 해당 키워드 목록을 반복하십시오.

그리고 키에 관계없이 모든 키워드 목록에있는 모든 키워드를 검색하려면 모든 키워드를 HashSet으로 유지하는 것이 좋습니다.

+0

분명히 편도가 가장 빠른 방법일까요? –

+0

@IsmailBadawi OP의 문제점을 자세히 이해하고 그렇게 생각한다면, 그렇게하십시오. –

+0

단 하나의 길만 있다면 그 길은 기본적으로 가장 빠름을 의미합니다. –

0

목록이 정렬되는지 또는 각 목록이 중복 값을 허용해야하는지 여부는 언급하지 않았습니다.

목록을 값순으로 정렬 할 수있는 경우 Collections.binarySearch을 사용할 수 있습니다. 목록의 구체적인 유형은 임의 액세스를 지원하는 구현 (예 : LinkedList 대신 ArrayList)이어야합니다.

목록이 정렬되어 있지 않고 각 목록에 각 값의 복사본이 하나만 있으면 목록 (예 : HashSet 또는 TreeSet)을 변경하는 것이 좋습니다.

목록을 게재 신청서별로 정렬해야하거나 각 목록에 동일한 값을 여러 번 저장할 수 있어야하는 경우 빠른 조회를 위해 보조 집합을 사용할 수 있습니다.

관련 문제