TreeSet
is backed up by TreeMap. The implementation looks like below.
public
TreeSet() {
this(new
TreeMap<E,Object>());
}
Constructs
a new, empty tree set, sorted according to the natural ordering of
its elements. TreeSet internally uses TreeMap, which stored the data
in Red Black tree. So to comapre the data it uses the comapreTo
method.
Example
import java.util.*; class TreeSetConstructor1{ public static void main(String args[]){ TreeSet<Integer> mySet = new TreeSet<> (); /* Add Data to mySet */ mySet.add(10); mySet.add(20); mySet.add(30); mySet.add(40); System.out.println("Elements in mySet are"); System.out.println(mySet); } }
Output
Elements in mySet are [10, 20, 30, 40]
1.
Any type of data insert into Tree set must implement Comparable
interface, other wise ClassCastException thrown.
class Employee{ int number; Employee(int number){ this.number = number; } public String toString(){ return "Employee " + number; } }
import java.util.*; class TreeSetConstructor1Ex{ public static void main(String args[]){ TreeSet<Employee> mySet = new TreeSet<> (); Employee e1 = new Employee(1); Employee e2 = new Employee(2); /* Add Data to mySet */ mySet.add(e1); mySet.add(e2); System.out.println(mySet); } }
Output
Exception in thread "main" java.lang.ClassCastException: Employee cannot be cast to java.lang.Comparable at java.util.TreeMap.compare(TreeMap.java:1188) at java.util.TreeMap.put(TreeMap.java:531) at java.util.TreeSet.add(TreeSet.java:255) at TreeSetConstructor1Ex.main(TreeSetConstructor1Ex.java:11)
To
make the program Exception free, Employee class must implement the
Comparable interface.
class Employee implements Comparable{ Integer number; Employee(int number){ this.number = number; } public String toString(){ return "Employee " + number; } public int compareTo(Object obj){ if(obj == null) throw new NullPointerException(); if(!(obj instanceof Employee)) throw new IllegalArgumentException(); Employee e1 = (Employee) obj; return this.number.compareTo(e1.number); } }
Output
[Employee 1, Employee 2]
No comments:
Post a Comment