안녕하세요 당신이 찾고있는 개체에 대한 Hashcode, HashMode HashMap에서 키로 사용하는 일종의 같은 경우 직접 HashSet 내용을 액세스 할 수 있는지 궁금하네요.직접 HashCode를 사용하여 HashSet에 액세스 하시겠습니까? (자바)
나는 그것이 같은 종류의 뭔가를 작동 할 수 상상 :
MyObject object1 = new MyObject(1);
Set<MyObject> MyHashSet = new HashSet<MyObject>();
MyHashSet.add(object1)
int hash = object1.getHashCode
MyObject object2 = MyHashSet[hash]???
감사합니다!
편집 : 답변 해 주셔서 감사합니다. 좋아, 나는 HashSet의 계약을 조금 추진하고 있을지도 모른다는 것을 이해한다. 그러나이 특정 프로젝트에 대해 평등은 해시 코드에 의해서만 결정되며, hashcode/hashbucket 당 하나의 객체 만 존재한다는 것을 나는 알고있다. HashMap을 사용하기를 꺼려했던 이유는 HashMap이 객체를 키로 사용하기 때문에 Integer 객체로 매핑하는 프리미티브 int를 변환해야하기 때문에 성능에 영향을 미칠 수도 있기 때문입니다. 비슷한 것을 구현하기 위해 할 수있는 일이 있습니까?
아니요, 불가능합니다. 왜 이걸하고 싶니? 네가지도를 원하는 것 같아. –
공개 API가 없습니다. 그리고 해시 코드가 충돌하더라도 여러 객체를 반환 할 수 있습니다. – Thilo
그런 식으로 물건을 얻을 수는 없습니다. 두 개의 다른 객체가 동일한 해시 코드를 가질 수는 있지만 같지 않을 수도 있기 때문에 의미가 있습니다. Hashset은 해시 코드가 일치하면 두 객체를 equals 메소드와 내부적으로 비교합니다. – BatScream