별도의 연결을 충돌 해결로 사용하는 Java Map 인터페이스 구현이 있습니까? HashMap과 HashTable에 대한 javadocs를 읽음으로써 구현이하는 것은 기본적으로 값을 대체하고 본질적으로 충돌 해결을 사용하지 않는다는 결론에 도달 했습니까?별도의 체인이있는 Hashmap
답변
틀렸어. 각 버킷에 연결된 항목 목록을 사용합니다.
지도에 값을 입력하면지도에서 키에 hashCode
을 호출 한 다음이 해시 코드를 변환하여 0과 버킷 수 사이에 있도록합니다. 버킷이 비어 있으면 키가이 버킷에 저장됩니다. 그렇지 않은 경우이 버킷의 모든 키는 equals
인 새 키와 비교됩니다. 값이 같으면 값이 새 값으로 바뀝니다. 그렇지 않으면 새 키가있는 새 항목이 버킷의 항목 목록에 추가됩니다.
주어진 키에 대해 여러 값을 저장하려면 Map<Key, List<Value>>
을 사용하거나 구아바의 MultiMap을 사용하십시오.
소스를 살펴 봅니다. 예, 링크 된 목록을 사용합니다. 그러나 TREEIFY_THRESHOLD가 있다는 점에 유의할 필요가 있습니다. 버킷이 초과되면 연결 목록이 빨간색 - 검정색 트리로 변환됩니다. – manyways
충돌 해결 기능이 있지만 두 개의 다른 키가 해싱 후 동일한 버킷에있을 수 있기 때문입니다.
단일 키에 둘 이상의 값을 저장하려는 경우 항상 HashMap<KeyType, ArrayList<ValueType>>
을 사용하고 필요에 따라 정리 작업을 수행하여 배열을 초기화 할 수 있습니다.
의 가능한 중복 Guava의 ListMultimap을 확인하십시오. 'Map
좋은 지적입니다. 감사. 나는 다음 프로젝트 (들)을 염두에 두겠다. – Vlad
- 1. HashMap 정렬하기
- 2. 일반 HashMap
- 3. 의 HashMap
- 4. HashMap 구현
- 5. HashMap 동기화
- 6. JGoodies HashMap
- 7. HashMap Serializability
- 8. 는 HashMap
- 9. HashMap "put() 메서드가 HashMap 유형에 대해 정의되지 않았습니다."
- 10. Object가 String, HashMap 또는 HashMap []의 인스턴스인지 확인합니다.
- 11. jsp에서 액세스 hashmap
- 12. HashMap 및 smooks
- 13. HashMap 구현 개념
- 14. HashMap 또는 HashSet을 사용해야합니까?
- 15. null을 반환하는 HashMap
- 16. Android Parcelable Parcel HashMap
- 17. hashmap put 성능 문제
- 18. HashMap 비 직렬화
- 19. 안드로이드에서 xls to hashmap
- 20. 의 HashMap, 값
- 21. Android Hashmap interaction
- 22. ListView HashMap 어댑터
- 23. ArrayList 또는 HashMap 사용
- 24. HashMap 값 문제()
- 25. java hashmap 키 반복
- 26. HashMap get/put 복잡도
- 27. 동일한 ArrayList에 액세스하는 HashMap
- 28. 중복을 유지하면서 HashMap 정렬
- 29. arraylist가있는 Java HashMap
- 30. ListAdapter from HashMap
http://stackoverflow.com/questions/2756479/java-hashtable-with-seperate-chaining-collision-resolution – Manish