-2
HashSet의 add 메서드에 관해서는 조금 문제가 있습니다. 심지어 here에 대한 소스 코드를 읽은 후에도, 나는 실제로 어떤 일이 일어나고 있는지 이해하지 못합니다.HashSet의 메소드에서의 조작 순서 add()
이 메소드는 정확히 무엇을 수행합니까? hashCode 및 equals에 대한 호출과 관련하여 취하는 작업의 순서는 무엇입니까?
HashSet의 add 메서드에 관해서는 조금 문제가 있습니다. 심지어 here에 대한 소스 코드를 읽은 후에도, 나는 실제로 어떤 일이 일어나고 있는지 이해하지 못합니다.HashSet의 메소드에서의 조작 순서 add()
이 메소드는 정확히 무엇을 수행합니까? hashCode 및 equals에 대한 호출과 관련하여 취하는 작업의 순서는 무엇입니까?
HashSet
은 단지 이며, 값은 Object
입니다.
그래서 add
은 단지 backing 해시 맵에 요소를 추가합니다. 해시 맵에 요소를 추가한다는 것은 hashCode를 사용하여 어디에 배치해야하는지 파악하는 것을 의미합니다. equals
은 우리가 추가하려고하는 키가 이미 있고 값이 방금 업데이트되어야 하는지를 결정하는 동안 사용됩니다.
* "값이 부울 값 인 곳 *"- Wrong – Tom
그래서 우리는 Object HashSet에 추가하려고하면 특정 HashCode가 있습니다. 그러나 이미 그 HashCode에 "bucketed"값이 있습니다. 추가하려고하고있는 새로운 Object가 equals() 메소드의 관점에서 동일하지 않은 경우, 이전에 "버킷 화 된"객체에 추가하려고하고있는 객체로 옮겨 놓을 수 있을지 어떨지를 판정합니다. –
@PedroRibeiro Research의 도움 : [Java HashMap은 어떻게 동일한 해시 코드로 다른 객체를 처리합니까?] (// stackoverflow.com/q/6493605) – Tom