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?
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?
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