The moose likes Beginning Java and the fly likes TreeSet question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "TreeSet question" Watch "TreeSet question" New topic

TreeSet question

Brian Lin

Joined: Apr 27, 2004
Posts: 2
Hi All,
I have the following code. Can anyone please tell me why the second println prints true while the first println prints false.
I looked up the API of Set, and it says
Returns true if this set contains the specified element. More formally, returns true if and only if this set contains an element e such that (o==null ? e==null : o.equals(e)).

Thanks in advance.
Jim Yingst

Joined: Jan 30, 2000
Posts: 18671
What is this Node class you're using? My guess is that it doesn't override equals() or compareTo() correctly, and falsely reports that the two instances are equal (or compareTo() == 0).

"I'm not back." - Bill Harding, Twister
Brian Lin

Joined: Apr 27, 2004
Posts: 2
I just did a little more testing on TreeSet. Here is what I got.

The output is:
Are they equal: false
Do they have the same hashcode: false
Is a equals to b: false
Is b in the TreeSet: true
How could this be happening? a and b have are not equal, and they have different hashCode. why is b in the TreeSet after I added a only? It seems to me that the contains() method only looks at compareTo method, and return true if compareTo returns 0.
in the above if I change the compareTo method and return -1 (it is bad, used just for demonstration purpose). then s.contains(b) in the last line of main method will return false.
Any idea?
Thanks in advance.
[ edited to break long line and to remove the evil tab character -ds ]
[ April 27, 2004: Message edited by: Dirk Schreckmann ]
Dirk Schreckmann

Joined: Dec 10, 2001
Posts: 7023
How about writing a proper compareTo method?
If you're unsure about the proper operation of the compareTo method, perhaps you'd taking a look at the Comparable interface documentation, which describes how the compareTo method is supposed to work.
[ April 27, 2004: Message edited by: Dirk Schreckmann ]

[How To Ask Good Questions] [JavaRanch FAQ Wiki] [JavaRanch Radio]
I agree. Here's the link:
subject: TreeSet question
It's not a secret anymore!