Tuesday, April 24, 2018

Agar kisi class ne comparable interface ko implement nahin kiya hai toh bhi hum uske objects ko TreeSet mai store kar sakte hain, or ye kaam hum Comparator interface ki help se kar sakte hai.

Comparator interface, java.util package ke andar hai. Is interface ka ek method hai jiska naam compare() hai.

declaration of compare() method inside Comparator interface ->

public abstract int compare(Object newObject,Object oldObject), newObject ka matlab woh object jo TreeSet mai store hona chahta hai, oldObject matlab woh object jo TreeSet mai pehle se stored hai.

baki, agar is method ne zero return kiya toh duplicacy mani jati hai, negative ke case mai newObject ko oldObject ke left mai, and positive ke case mai newObject ko oldObject ke right mai store kiya jata hai

----------------------------------------------------------------------------------

now, how to store an object of class inside TreeSet if it is doen implement not Comparable interface

## ye woh clas hai jiske objects ko hame TreeSet mai store karna hai
public class Person
{
    ## private data members of Person
    private int age;
   
    ## parameterized constructor of Person
    public Person(int age)
    {
    this.age = age;
    }
   
    ## setters and getters of Person, to store and fetch the data
    public void setAge(int age)
    {
    this.age = age;   
    }
   
    public int getAge()
    {
    return age;
    }
   
}

## ab hum ek class define karte hain jo ki Comparator interface ko implement karegi 
Person ke objects ko sorting logic provide karne ke liye, kyunki Person comparable nahin hai, or hame TreeSet ko person ke objects ko sort karne ka login batana hi padega

import java.util.*;
public class ImpComparator implements Comparator<Person> // Person hi woh class hai
// jiske objects ko sort karna hai, hai na
{
// ab hum Comparator interface ke compare() method ko override karenge
        public int compare(Person newObject,Person oldObject)
        {
        // agar mujhe person ko unki age se sort karna hai tok
        // ek kaam karte hai
        // person ke getter method ko call karke person ki age fetch karte hai
        // or newPerson ki age mai se oldPerson ki age subtract kar denge
        // or wohi result return kar denge
        // like this ------>
        return newPerson.getAge() - oldPerson.getAge();    
        // ## bus, ho gaya kaam
        }
}

------------------------------------------------------------------------------
## ab ek test application bana lete hain
## isme hum person ke kuch object bana kar TreeSet mai daal denge
## or haan, TreeSet ko ye batane ke liye ki person ko sort karne ka logic kisne diya hai
hum ek kaam karenge
## ImpComparator class ka ek object bana kar, us object ka naam (ref-var) hum TreeSet ke constructor ke andar paas kar denge

toh chalo banate hain..........................

import java.util.*;
public class Test
{
    public static void main(String[] args)
    {
    // create some person
    Person p1 = new Person(35);
    Person p2 = new Person(25);
    Person p3 = new Person(15);
   
    // create object of class that implements Comparator interface
    ImpComparator imp = new ImpComparator();
   
    // link TreeSet with ImpComparator by passing the object 'imp' inside the constructor
    TreeSet<Person> set = new TreeSet<Person>(imp);

    // store person object inside TreeSet
    set.add(p1);   
    set.add(p2);   
    set.add(p3);   
   
    // fetch the objects using for-each-loop
    for(Person p : set)
    {
    // fetch data of person using getter and show it
    Ssytem.out.println(p.getAge());
    }
    }
}














No comments:

Post a Comment