I am checking how TreeSet checks for duplicate elements and have the following code
import java.util.*;
public class TreeDemo{
public static void main(
a comparator return < 0, 0 or > 0... So equals is implemented by compareTo returning 0. Thus
if (node1.compareTo(node2) == 0)
then the node is already in the set
TreeSet implements a balanced binary search tree based upon ordering of its members (via the Comparable or Comparator interfaces), not on hashing.
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
TreeSet
(or technically, the TreeMap
that backs it) only uses the compareTo()
function to compare the elements.
It does not use Object
's .equals()
or .hashCode()
. Moreover, if it had used any of them, your output would have been
[song1, song2, song3, song3]
because Object
's default implementation uses memory addresses to test object equality, not their members.