2009-03-19 3 views

답변

14

가끔은 해시를 "사전"이라고 부릅니다. 그 자체로 좋은 예라고 생각합니다. 대신 정의가 저장 될 것이라고 정확한 숫자 인덱스를 알아 내기 위해 노력

definition['pernicious'] 

: 당신은 단어의 정의를 검색하려면, 그냥 그런 짓을하는 것이 좋다.

이 답변은 기본적으로 연관 배열을 가리키는 "해시"로 가정합니다.

+0

그게 내가 말하려고했던거야! 당신은 나를 때려 눕힘 –

+0

정말, 해시의 요점은 객체를 더 빠르게 찾는 것입니다. 그 해시 된 객체가 다른 객체와 연결되어 있다면, 그것은 대단합니다 (그리고 아마도 가장 일반적인 상황입니다). 하지만 C# (http://www.sgi.com/tech/stl/hash_set.html)에서 hash_set을 고려해보십시오. – Brian

+0

저는 이것이 실제 세계의 실례라고 생각하지 않습니다. 사전을 통해 보는 사람은 보간 검색을 사용합니다. 실제 사전에는 단어를 찾는 O (1) 방법이 없습니다. –

0

하나의 변수를 다른 변수와 연관시켜야 할 때. 해시에서 키/값이 될 수있는 것에 대한 "유형 제한"이 없습니다.

5

나는 잘못된 방향으로 물건을보고 있다고 생각합니다. 해시를 사용해야하는지 여부를 결정하는 객체가 아니라 액세스하는 방식을 결정합니다. 조회 테이블을 사용할 때 해시가 일반적으로 사용됩니다. 객체가 문자열이고 객체가 Dictionary에 있는지 확인하려는 경우 O (1)을 통해 해당 객체를 찾습니다 (해시가 제대로 작동한다고 가정). 정렬 할 때 시간은 O (logn)가되며, 이는 받아들이지 않을 수 있습니다.

따라서, 해시들은 또한 오브젝트 (암호) 자체를 기억하지 않고 물체를 표현하는 유용한 방법 등

, (hashsets) 설정 사전 (HashMaps을)와 함께 사용하기에 적합하다.

1

1 대 1지도가 잘 처리되는 데이터가있을 때마다 예를 들어

, 클래스의 성적 :

"존 스미스"=> "B +"

"야곱 Jenkens"=> "C"

2

전화 번호부 - 키 = 이름, 값 = 전화 번호.

나는 또한 오래된 World Book Encyclopedias (실제 책)를 생각해 본다. 각 기사는 하나의 책으로 "해시"됩니다 (고양이는 "C"볼륨에 들어갑니다).

0

해시에는 많은 용도가 있습니다. 암호화 용도 외에도 빠른 정보 검색에 일반적으로 사용됩니다. 배열을 사용하여 비슷하게 빠른 조회를하려면 배열을 정렬 된 상태로 유지하고 이진 검색을 사용해야합니다. 해시를 사용하면 정렬 할 필요없이 빠른 검색을 얻을 수 있습니다. 이것은 대부분의 스크립팅 언어가 하나의 이름 또는 다른 언어 (해설 등)로 해싱을 구현하는 이유입니다.

1

일반적으로 해시를 사용하면 빠르게 찾을 수 있습니다. 해시 맵을 사용하면 다른 것을 빠르게 조합 할 수 있습니다. 해시 세트는 물건을 "빠르게"저장합니다.

해시 컨테이너 또는 일반 컨테이너를 사용하는 것이 더 나은지 고려해 볼 때 해시 함수의 복잡성과 비용을 고려하십시오. 해시 값의 추가 크기와 "완벽한"해시를 계산하는 데 필요한 시간 및 해시 함수 충돌의 경우 끝에 1 : 1 비교를 수행하는 데 필요한 시간은 사실 훨씬 적습니다. 그런 다음 적은 수의 연산자를 사용하여 로그 하리 복잡성을 가진 트리 구조를 거쳐 갈 수 있습니다.

0

내 앱 설정의 '사전'으로 자주 사용합니다.

설정 | 값

데이터베이스 또는 구성 파일에서 내 응용 프로그램에서 사용할 수 있도록 해시 테이블에로드합니다.

잘 작동하고 간단합니다.

0

지역, 도시 또는 우편 주소와 연결된 우편 번호 일 수 있습니다.

0

좋은 예는 많은 요소가있는 캐시입니다. a 값 (URL을 말하면 캐시 된 웹 페이지를 찾으려고합니다)을 찾으려는 식별자가 있습니다. 이러한 조회를 가능한 빨리 수행하고 일부 URL이 요청 될 때마다 저장된 모든 페이지를 검색하지 않으려합니다. 해시 테이블은 이와 같은 문제에 대한 훌륭한 데이터 구조입니다.

0

내가 작성한 실제 사례 중 하나는 지출 보고서를 제출할 때 사람들이 식사 비용을 합산 한 것입니다.

특정 날짜에 얼마나 많은 항목이 존재하는지 알지 못하고 일일 총계를 얻고 지출 보고서의 날짜 범위를 알지 못했습니다. 얼마나 많은 사람들이 많은 변수 (도시, 주말 등)를 얼마나 지출 할 수 있는지에 대한 제한이 있습니다.

해시 테이블은 이것을 처리하기위한 완벽한 도구였습니다. 열쇠는 값이 영수증 금액 (USD로 변환) 인 날짜입니다. 영수증은 순서에 관계없이 올 수 있으며, 그 날짜에 대한 가치를 계속 얻고 작업이 완료 될 때까지 추가합니다. 표시도 쉬웠습니다.

0

(PHP 코드)

$david  = new stdclass(); 
$david->name = "david"; 
$david->age = 12; 
$david->id = 1; 
$david->title = "manager"; 

$joe  = new stdclass(); 
$joe->name = "joe"; 
$joe->age = 17; 
$joe->id = 2; 
$joe->title = "employee"; 

// option 1: lets put users by index 
$users[] = $david; 
$users[] = $joe; 

// option 2: lets put users by title 
$users[$david->title] = $david; 
$users[$joe->title] = $joe; 

지금 질문 : 관리자가 누구인가? 대답 :

$users["manager"]