TreeSet의 구조와 Comparator 주의사항
TreeSet 구조 TreeSet은 필드로 NavigableMap 인터페이스를 가지고 있으며, TreeMap 클래스가 해당 인터페이스를 구현하는 구조를 가지고 있습니다. TreeSet 생성자가 호출되면 m 필드에 TreeMap 클래스가 할당됩니다. 문제점 발견 TreeSet을 사용하면서 예상한 결과값과 다르게 결과가 나와서 원인을 찾아보기로 했습니다. 예시: x만 비교할 때 Comparator<Point> comparator = Comparator.comparingInt(p -> p.x); TreeSet<Point> treeSet = new TreeSet<>(comparator); treeSet.add(new Point(1, 1)); treeSet.add(new Point(1, 2)); System.out.println(treeSet.size()); // 결과: 1 x만 비교하여 TreeSet 자료구조를 사용했을 때는 1개의 요소밖에 존재하지 않았습니다. HashSet이라면 객체의 hashCode()와 equals()를 비교하여 2라는 결과가 나왔을 텐데… ...