gunjan khanuja wrote:
Why adding drip object the second time gives me exception??Please explain what happens when i add drip object for the first time and when i add drip object the second time
In the above code
Set set=new TreeSet();
Set set which is a TreeSet accepts an object that is very true when developer adds an object new Drip() to code, code will not fail. Now when developer will add another object new Drip() the code will fail.
Now replace the code with a fresh code
Set set=new TreeSet();
set.add(new Integer(10)); // replace person object with Integer object
set.add(new Integer(20)); // replace person object with Integer object
System.out.println(set);
The above code will not fail.
Now lets dig in to the concept.
TreeSet is a class belongs to Set interface, being a set it does not accept duplicates. First object insertion goes fine here,Now when we are trying to add the second object then there must be a criteria based on which the 2 object should be comparable. And in the above code there is no such criteria, for uniqueness the set internally use compareable interface to check object equality which is not implemented by the Person class,So in this case developer have to implement the comparable interface in his Person Class.
There are fourteen classes in the
Java 2 SDK, version 1.2, that implements the Comparable interface.
BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short, Character, CollationKey, Date, File, ObjectStreamField,
String
So when developer will try to add the above objects they won’t give any problem, as developer is facing in above scenario.
Below code for Drip class will solve the developer’s problem.
public class Drip implements Comparable{
int i;
Drip(int i){
i = this.i;
}
public int compareTo(Object o1) {
if (this.i == ((Drip) o1).i)
return 0;
else if ((this.i) > ((Drip) o1).i)
return 1;
else
return -1;
}
}
Hope this helps....