자바에서는 고유한 객체들을 담을 수 있는 Set 자료구조, 정확히는 인터페이스를 제공하고 있다. 이를 구현한 객체는 HashSet, TreeSet, LinkedHashSet 등이 있으며 자주 사용하는 것은 HashSet일 것이다. 그런데 요즘 LeetCode에서 알고리즘 공부를 하다가 HashSet에 String 객체를 넣었을 때 이를 어떻게 비교하는 거지?라는 궁금증이 들었다. 분명 String도 결국엔 객체고 일반적으로 서로 다른 객체끼리는 다르다고 비교되는데 문자열은 어떻게 비교되는 것일까? 문득 HashSet의 contains 메서드를 사용하다가 이와 같은 의문이 들었기 때문에 좀 조사해보았다. 예전에 학교 다닐 때 자바 수업에서도 귀가 아프게 들었던 얘기지만 String 클래스의 equals, ..