Tuesday, November 9, 2010

Comparing collection objects

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication1;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author sowjanya.g
 */
public class compare {

    public static void main(String args[]){

        employee e = null;
        List al=new ArrayList();
        e=new employee("sowji","sowji@gmail.com",24);
        al.add(e);
        e=new employee("sowji1","sowji1@gmail.com",30);
        al.add(e);
        boolean checkFlag = false;
        for(employee emp: al){
            if(emp.getMailId().equals("sowji1@gmail.com")){
                checkFlag = true;
                break;
            }
        }
        System.out.println("Check Flag:=="+checkFlag);
        if(!checkFlag){           
            e=new employee("sowji2","sowji1@gmail.com",40);
            al.add(e);
        }
       
        for(employee emp: al){
            System.out.println("email Id:=="+emp.getMailId());
        }


    }

}
class employee
{
    String name;
    String mailId;
    int age;

    public employee(String name,String mail,int age)
    {
        this.name=name;
        this.mailId=mail;
        this.age=age;
    }
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getMailId() {
        return mailId;
    }

    public void setMailId(String mailId) {
        this.mailId = mailId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Java Code for sorting objects in collection classes using Comparator

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication1;

/**
 *
 * @author sowjanya.g
 */


import java.util.Arrays;
import java.util.Comparator;

    /*

    Java Comparator example.
    This Java Comparator example describes how java.util.Comparator
    interface is implemented to compare Java user defined classe's objects.
    These Java Comparator is passed to Collection's sorting
    method ( for example Collections.sort method)to perform sorting of Java user defined classe's objects.

    */


    /*

    java.util.Comparator interface declares two methods,
    1) public int compare(Object object1, Object object2) and
    2) boolean equals(Object object)

    */

    /*
    We will compare objects of the Person class using custom comparators
    on the basis of person age and name.
    */

class Person{
    private int age;
    private String name;
    public void setAge(int age){
        this.age=age;
    }

    public int getAge(){
        return this.age;
    }

    public void setName(String name){
        this.name=name;
    }

    public String getName(){
        return this.name;
    }
}

/*

User defined java comaprator.
To create custom java comparator Implement Comparator interface and
define compare method.
The below given comparator compares persons on the basis of their age.

*/

class AgeComparator implements Comparator{

    public int compare(Object emp1, Object emp2){
        //parameter are of type Object, so we have to downcast it to Person objects
        int emp1Age = ( (Person) emp1).getAge();
        int emp2Age = ( (Person) emp2).getAge();
        if( emp1Age > emp2Age ){
            return 1;
        }
        else if( emp1Age < emp2Age ){
            return -1;
        }
        else{
            return 0;
        }
    }

}

/* The below given comparator compares persons on the basis of their name. */

class NameComparator implements Comparator{

    public int compare(Object emp1, Object emp2){
        //parameter are of type Object, so we have to downcast it to Person objects
        String emp1Name = ( (Person) emp1 ).getName();
        String emp2Name = ( (Person) emp2 ).getName();
        //uses compareTo method of String class to compare names of the person
        return emp1Name.compareTo(emp2Name);
    }

}

/*

This Java comparator example compares persons on the basis of

their age and name and sort it in that order.

*/

public class JavaComparatorExample{

    public static void main(String args[]){

        /*    Person array which will hold persons */

        Person person[] = new Person[2];
        //set different attributes of the individual person.
        person[0] = new Person();
        person[0].setAge(40);
        person[0].setName("Joe");

        person[1] = new Person();
        person[1].setAge(20);
        person[1].setName("Mark");

        System.out.println("Order of person before sorting is");
        //print array as is.
        for(int i=0; i < person.length; i++){
            System.out.println( "Person " + (i+1) + " name :: " +
                    "" + person[i].getName() + ", Age :: " + person[i].getAge());
        }

        /*

        Sort method of the Arrays class sorts the given array.
        Signature of the sort method is,
        static void sort(Object[] object, Comparator comparator)
        IMPORTANT: All methods defined by Arrays class are static. Arrays class
        serve as a utility class.

        */

        /*    Sorting array on the basis of person age by passing AgeComparator    */

        Arrays.sort(person, new AgeComparator());
        System.out.println("\n\nOrder of person after sorting by person age is");
        for(int i=0; i < person.length; i++){
            System.out.println( "Person " + (i+1) + " name :: " +
                    "" + person[i].getName() + ", Age :: " + person[i].getAge());
        }

        /*    Sorting array on the basis of person Name by passing NameComparator */

        Arrays.sort(person, new NameComparator());
        System.out.println("\n\nOrder of person after sorting by person name is");
        for(int i=0; i < person.length; i++){
            System.out.println( "Person " + (i+1) + " name :: " +
                    "" + person[i].getName() + ", Age :: " + person[i].getAge());
        }
    }

}

Java Code for sorting objects in collection classes using Comparable interface

package javaapplication1;

import java.util.ArrayList;
import java.util.Collections;

/**
*
* @author sowjanya.g
*/
public class Main {

public static void main(String[] args) {
ArrayList al=new ArrayList();

person p1=new person("sowjanya","sowji1.gutla@gmail.com","24");
person p2=new person("lavanya","ll.gutla@gmail.com","24");
person p3=new person("chaithu","chaithu1.gutla@gmail.com","24");
person p4=new person("avinash","zzzzi.moram@gmail.com","24");

al.add(p1);
al.add(p4);
al.add(p3);
al.add(p2);

System.out.println("al---before--"+al);

Collections.sort(al);

System.out.println("al----after---"+al);
}
}


class person implements Comparable
{
String name;
String mailId;
String age;

public int compareTo(Object o)
{
person per=(person)o;
return mailId.compareTo(per.getMailId());
}


person(String name1,String mail,String age1)
{
name=name1;
mailId=mail;
age=age1;
}
// method used to know the o/p as strings instead objects
@Override
public String toString()
{
return "Name: "+name+"---mailId--"+mailId+"---age--"+age;
}



public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getMailId() {
return mailId;
}
public void setMailId(String mailId) {
this.mailId = mailId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}