2013-10-19 2 views
0

나는 내 자신의 자바 트리 집합을 구현하고있다. 기본 데이터 구조는 BST이고 트리의 각 노드에는 Object type 데이터 필드가 포함되어 있다고 생각합니다. 그러나 자연 순서 비교자를 사용하여 두 객체 유형 데이터를 비교하는 방법에 착수했습니다. 두 객체를 비교하고 자연 순서의 값을 반환하는 compareTo 함수가 있습니까? 또한 각 노드에 대한 인덱스 키로 hashcode를 사용하여이를 기반으로 비교를 수행 할 생각입니다. 그러나 별개의 객체는 동일한 해시 코드를 가질 수 있습니다. 모든 조언을 부탁드립니다.자바에서 내 자신의 트리 집합을 구현

+1

기존 코드의 예가 도움이 될 것입니다. – voidHead

답변

0

(BST 대신) RBT (빨강 검정 나무)를 고려하십시오. 자세한 내용은 here을 참조하십시오.

이제 MyTreeSet은 두 가지 종류의 객체를 사용할 수 있습니다. 1. String, Integer, Long 등의 java 주어진 래퍼 클래스의 객체 또는 2. 사용자가 작성한 사용자 정의 클래스의 객체.

데이터 구조가 사례 1을 지원해야하는 경우 모든 Java 제공 래퍼 클래스에 의해 구현되는 compareTo 메소드를 기반으로 쉽게 순서를 지정할 수 있습니다. 어떤 객체가 반환 값 0, 음수 및 양수 값에 따라 다른 객체보다 크거나 같거나 작은 객체를 알기 위해서는 compareTo 메소드를 호출하기 만하면됩니다.

케이스 2의 경우 MyTreeSet이 사용자 정의 클래스의 객체를 가져와야한다는 것을 의미합니다. 그런 다음 사용자 정의 클래스에 대한 Comparable 인터페이스를 구현하고 비교 알고리즘을 작성해야합니다. 예를 들어 MyTreeSet이 Employee 클래스 객체를 가져 와서 Employee 클래스에 Comparable 메소드를 구현하고 emp1을 emp2와 비교하는 방식에 따라 compareTo 메소드 구현을 작성하게하려면 예를 들어, 직원 ID를 기준으로 정렬 할 수 있습니다.

희망이 있으면 도움이됩니다.