TreeSet에 대한 javadocs에서 '이 클래스는 TreeMap 인스턴스에 의해 지원되는 Set 인터페이스를 구현합니다.'라는 것이 무엇을 의미하는지 알고 싶습니다. 아래 예에서 Hashcode 메소드를 구현하지 않았지만 여전히 예상대로 작동하고 있습니다. 즉 객체를 정렬 할 수 있습니다. TreeSet 동작을 검사하기 위해 일관되게 Equals 구현을 구현하지 않았습니다. 그것이 compareTo 메소드와 해시에 기초하여 소팅된다 .SOTreeSet은 내부적으로 TreeMap을 사용하므로 Treeset을 사용할 때 Hashcode 메소드를 구현해야합니다.
import java.util.TreeSet;
public class ComparisonLogic implements Comparable<ComparisonLogic>{
String field1;
String field2;
public String toString(){
return field1+" "+field2;
}
ComparisonLogic(String field1,String field2){
this.field1= field1;
this.field2= field2;
}
public boolean equal(Object arg0){
ComparisonLogic obj = (ComparisonLogic) arg0;
if(this.field1.equals(obj.field1))
return true;
else
return false;
}
public int compareTo(ComparisonLogic arg0){
ComparisonLogic obj = (ComparisonLogic) arg0;
return this.field2.compareToIgnoreCase(obj.field2);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ComparisonLogic x = new ComparisonLogic("Tom", "jon");
ComparisonLogic y = new ComparisonLogic("Tom", "Ben");
ComparisonLogic z = new ComparisonLogic("Tom", "Wik");
TreeSet<ComparisonLogic> set = new TreeSet<ComparisonLogic>();
set.add(x);
set.add(y);
set.add(z);
System.out.println(set);
}
}
이 예 인쇄 [톰 벤 톰 존 톰 WIK() 메소드는이 scenario.However에 사소한 것처럼 보이지만 TreeSet의은 트리 맵에 연동, 그래서 내부적으로 TreeMap이 정렬에 사용되면, treeMap이 객체를 해싱하는 방법은 무엇입니까?
추가 정보를 제공하기 위해 질문을 편집했습니다. – Metalhead
더 이상의 정보는 필요 없습니다 - 제가 제안한 것을 시도해보십시오. 그리고 여러분은 제가 의미하는 것을보실 수 있습니다! – Russell
내가 망 쳤어. 내 equals 메서드 구문이 올바르지 않습니다. equal() :()을 사용했습니다. – Metalhead