내가 read했습니다 (자바에 새로운) 혼란 스러워요 그 :
TreeSet의 실제로 전혀 등호()를 사용하지 않습니다. compareTo()를 대신 사용합니다. compareTo()가 0을 반환하면 두 개의 객체가 이고 TreeSet과 관련이 있다는 것을 의미합니다.
우수.
그래서 내가 가진 :public class User implements Comparable<User>
{
String Username;
String Password;
@Override
public int compareTo(User o)
{
return o.Username.compareTo(this.Username);
}
}
나는 또한이 :
public static void main(String[] args)
{
TreeSet<User> ts = new TreeSet<User>();
User u = new User();
u.Username="u";
ts.add(u);
User u1 = new User();
u1.Username="u";
ts.add(u1); //<---------------
System.out.print(u1.compareTo(u)); //0
}
디버그에서 상대 : compareTo
- 반환 "0". 내가 두 요소를 "같은 주문"삽입 할 때
는 왜 예외가없는
질문 : 그렇다면
(그들은 같은 순서가)?
'ts'의 길이는 1입니다. BTW :'Implementing comparable'을 상속 받고 싶지 않다면, 다른 생성자를 사용할 수 있습니다 :'new TreeSet (new comparable )'. –
@PeterRader 더 좋아해. 당신이 상속받을 수 없다면 ....-) –
왜 예외가 생길까요? 대신'add'는 문서화 된대로 false를 반환합니다. –