2011-10-01 3 views
3

속성으로 객체를 찾아야합니다.해시 맵을 사용하여 개체 목록을 인덱싱하는 것이 좋습니까?

하나의 옵션은 개체 배열을 반복하고 속성이 일치하는 각 개체를 확인하는 것입니다.

다른 옵션은 특성을 키로 사용하여 개체를 해시 맵에 배치하는 것입니다. 그러면 속성을 사용하여 객체를 검색 할 수 있습니다.

두 번째 옵션은 속성 데이터를 복제 했음에도 불구하고 좋은 방법입니까?

참고 :이 속성은 고유 한 것으로 간주됩니다.

+1

다릅니다. 당신이 그것을 찾은 후에 어떻게 사용합니까? 속성이 변경되지 않는 것이 좋습니다. 변경하려는 경우가 아닐 수도 있습니다. –

답변

6

예! 당신이 제시 한 것부터 일반적으로 맵을 사용하는 것이 항상 낫습니다. Map에서 키를 찾는 것은 O (1)입니다. 배열 또는 목록에서 요소를 찾는 것은 O (n)입니다.

+2

한 가지 기억해야 할 점은 객체가 많이있는 경우지도가 자주 반복해서 작성해야하며 값이 비싸다는 것입니다. – hvgotcodes

+2

@hvgotcodes 아직 O (1)을 상각합니다. 그리고 그렇지 않더라도,지도를 재배하는 것은 여전히 ​​O (N)입니다. – Voo

+0

확신할만한 그 무언가 – hvgotcodes

1

속성이 고유하고 검색 할 개체가 많거나 많이 검색해야하는 경우 - 색인을 만드십시오. 그것은 종종 균형을 이룹니다.

OTOH, 개체가 많지 않거나 많이하지 않는 경우 어느 쪽이든 상관 없습니다.

관련 문제