wood burning stoves 2.0*
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
Author

TreeSet question

Brian Lin
Greenhorn

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
Wanderer
Sheriff

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
Greenhorn

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
0
Is a equals to b: false
Is b in the TreeSet: true
1
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
Sheriff

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]
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
 
subject: TreeSet question
 
Similar Threads
Collections.
Generic
TreeSet with compartor constructor
Please help me to explain this result