TreeSet Sorting Order Confusion

Viewed 36

I know that TreeSet in Java sort its elements in ascending order. For integer it would be 1, 2, 3, 4, 5, for String it would be alphabetical. However, what if I want to input objects in that TreeSet, how it is going to be sorted by default?

1 Answers

That object must either implement Comparable

class MyObject implements Comparable<MyObject>
{
  int value;

  MyObject(int value)
  {
    this.value=value;
  }

  //Sorting order controlled here
  @Override
  public int compareTo(MyObject m)
  {
    return Integer.compare(this.value,m.value);
  }
}

TreeSet<MyObject> set=new TreeSet();
//add stuff here

Or you supply your own Comparator. Use lambda expressions with java 7 and above

TreeSet<MyObject> set=new TreeSet((obj1,obj2)->Integer.compare(obj1.value,obj2.value));

Comparator takes precedence over Comparable and your object dosen't need to implement Comparable which is useful for 3rd party libraries which don't implement the interface

Related