해시 테이블에서 별도의 연결을 언급 할 때마다 연결 목록이 충돌이있는 항목을 저장하는 데이터 구조로 사용되는 것처럼 보입니다. 왜 이런거야? 예를 들어 벡터/배열 데이터 구조를 사용할 수없는 이유는 무엇입니까?왜 링크 된 목록은 거의 항상 별도의 체인으로 사용됩니까?
답변
오브젝트 벡터가있는 경우 오브젝트를 복사하는 것이 비용이 많이 들기 때문에 대부분의 범용 해시 테이블은 삭제 또는 삽입시 사본이 필요없는 링크 된 목록을 사용합니다. 그러나 해시 테이블에서의 삭제는 실제로 대부분의 코드에서 드문 작업이며 삽입은 드물습니다 (긴 체인을 자르지 않으려합니다). 그래서 해시를 구현할 때마다 항상 체인에 벡터를 사용했습니다 , 전혀 문제 없습니다.
다른 설명은 연결된 목록이 사람들이 맹목적으로 접근하는 컨테이너라는 것입니다. 이에 대한 의견은 here을 참조하십시오.
당신은 벡터/ArrayList를하지만, 사용할 수 있습니다
이- 당신은 O의 목록에 인덱싱 ArrayList에 링크 된 목록이없는 것을 제공하는 기능 중 하나를 필요가 없습니다를 (1) 시각.
- ArrayList의 용량이 현재 길이보다 커서 메모리를 낭비하는 경향이 있습니다.
- ArrayLists는 가끔씩 용량을 늘릴 필요가 있습니다.
악마 옹호자 역할 : a) 목록에 삽입 할 필요가 없습니다. b) 포인터는 요소를 삽입 할 때 업데이트해야합니다. 느립니다. c) 포인터로 인한 오버 헤드로 인해 연결된 목록은 항상 같은 크기의 배열 목록보다 크기 때문에 메모리를 낭비합니다. – meriton
b) 링크 된 목록을 업데이트 할 때 하나 또는 두 개의 포인터 만 업데이트하면됩니다. arraylist를 업데이트 할 때 포인터와 카운트를 업데이트해야하므로 실제 저장은 없습니다. c) 이것은 어레이 목록에 추가 용량이없는 경우에만 해당되며, 심지어 하나의 요소가있는 목록의 경우에도 여전히 유효하지 않습니다. –
@ MarkByers 안녕 마크, 여기에 내가 질문을했습니다. 우리는로드 계수를 1로하는 것이 좋겠지 만 그런 식으로 해시 테이블의 모든 LinkedList는 단 하나의 요소 만 포함 할 수 있습니다. 모든 LinkedList의 목적을 알고 있습니다. 충돌 문제,하지만 난 왜 현재 테이블의 크기가 원래 테이블 크기보다 큰 동안 같은 테이블을 재탕 필요성을 이해할 수 없습니까? 모든 LinkedList에 더 많은 요소를 저장할 수없는 이유는 무엇입니까? 도와 주실 수 있으면 감사드립니다! – Crabime
- 1. 왜 Unity가 체인으로 연결되어 있습니까?
- 2. 링크 된 목록 만이 제한적으로 사용됩니까?
- 3. io_service, 왜, 어떻게 사용됩니까?
- 4. LiteralControl이란 무엇입니까? 왜 사용됩니까?
- 5. 왜 CDN은 항상 하위 도메인 대신 별도의 호스트를 사용합니까?
- 6. Smarty가 왜 템플릿 엔진으로 사용됩니까?
- 7. C++에서는 거의 항상 가상 상속을 사용해야합니까?
- 8. 왜 AS3에서 벡터보다 링크 된 목록이 빠릅니까?
- 9. 왜 항상 출력이 0입니까?
- 10. 왜 self.navigationItem.backBarButtonItem은 항상 nil입니까?
- 11. .NET 코드 보안 - 왜 거의 사용되지 않습니까?
- 12. pcap 왜 항상 8 바이트 패킷 ... 왜?
- 13. 링크 된 간격 목록
- 14. Backbone.js : _.bindAll() 초기화 - 왜 이것이 사용됩니까?
- 15. Scala에서 @uncheckedVariance가 필요한 시점과 GenericTraversableTemplate에서 왜 사용됩니까?
- 16. 왜 Java 웹 응용 프로그램에서 직렬화가 사용됩니까?
- 17. 왜 친구 클래스가 유효성 검사에 사용됩니까?
- 18. 왜 Perl은 CGI 스크립트 작성에 일반적으로 사용됩니까?
- 19. IDirect3DDevice9의 스왑 체인으로 데이터 큐잉
- 20. 링크 된 목록의 헤드 노드
- 21. 링크 된 목록 재귀
- 22. 왜 WYSIWYG는 항상 iFrame에 있습니까?
- 23. Grails 리디렉션 - 왜 항상 절대적입니까?
- 24. 왜 NSAppleScript의 compileAndReturnError는 항상 성공합니까?
- 25. 보기에서 항상 출력을 이스케이프합니까? 왜?
- 26. Python 목록은 클래스 인스턴스 초기화시 비어 있어야하지만 그렇지 않습니다. 왜?
- 27. Gridview에서 별도의 브라우저로 이동 하이퍼 링크
- 28. 링크 된 목록 스레드로부터 안전합니까?
- 29. hrefs가 동일한 경우 링크 목록은 텍스트를 바꿉니다. jQuery
- 30. 체인으로 연결된 프로그래밍의 일반적인 용어가 있습니까?
블로그 게시물을 구체적으로 말하고 싶습니다. 나는 이것에 대해 더 많이 듣고 싶다. –
http://punchlet.wordpress.com/2009/12/27/letter-the-fourth/ –