Thursday, July 29, 2010

All about comparators

 package mysorting;

import java.util.Comparator;

public class ComparePersonByName implements Comparator
{

    @Override
    public int compare(Object p1, Object p2) {
        Person person1 = (Person)p1;
        Person person2 = (Person)p2;
        String s1 = person1.getName();
        String s2 = person2.getName();
      
        return s1.compareTo(s2);
    }

}

package mysorting;

import java.util.Comparator;

public class ComparePersonByAge implements Comparator
{

    @Override
    public int compare(Object p1, Object p2) {
        Person person1 = (Person)p1;
        Person person2 = (Person)p2;
        Integer age1 = person1.getAge();
        Integer age2 = person2.getAge();
       
        return age1.compareTo(age2);
    }

}

package mysorting;

import java.util.Comparator;
import java.lang.reflect.*;

public class ComparePersonByNameDescending implements Comparator
{

    @Override
    public int compare(Object p1, Object p2) {
        Person person1 = (Person)p1;
        Person person2 = (Person)p2;
        String s1 = person1.getName();
        String s2 = person2.getName();
       
        return - s1.compareTo(s2);
    }

}


package mysorting;
public class Person implements Comparable
{
    // fields
    private String name; // the person's name
    private int age;
    public int getAge() {
        return age;
    }

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

    private int maximumBooks;
  
    // constructor
    public Person(String n)
    {
        name = n;
        maximumBooks = 3;
    }
   
    public Person(String n, int a)
    {
        name = n;
        age = a;
        maximumBooks = 3;
    }   
   
    // getters and setters
    public String getName()
    {
        return name;
    }
  
    public void setName(String n)
    {
        name = n;
    }

    public int getMaximumBooks() {
        return maximumBooks;
    }

    public void setMaximumBooks(int maxBooks) {
        maximumBooks = maxBooks;
    }
   
    public String toString()
    {
        return getName() + " (" + getMaximumBooks() + " books)";
    }

    @Override
    public int compareTo(Object arg0) {
        Person p1 = (Person)arg0;
        if (name.compareTo(p1.getName()) == 0 )
            return 0;
        else if (name.compareTo(p1.getName()) < 0)
            return -1;
        else if (name.compareTo(p1.getName()) > 0)
            return +1;
        return 0;
    }
}
  

package mysorting;

import java.util.Comparator;

public class Sorting
{
    public static void BubbleSort(Person a[], Comparator c)
    {
        for (int i = 0; i < a.length - 1; i++)
        {
            for (int j = 0; j < a.length - i - 1; j++)
            {
                if (c.compare(a[j], a[j+1]) > 0)
                {
                    Person temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                } // end if
            } // end for j
        } // end for i
    } // end method Bubblesort
   
    public static void main(String args[])
    {
        Person a[] = new Person[4];
        a[0] = new Person("mary", 12);
        a[1] = new Person("jeremy", 10);
        a[2] = new Person("susan", 15);
        a[3] = new Person("josh", 20);
       
        Sorting.BubbleSort(a, new ComparePersonByNameDescending());
        for (Person x : a)
            System.out.println(x);
       
        System.out.println("");
       
        Sorting.BubbleSort(a, new ComparePersonByAge());
        for (Person x : a)
            System.out.println(x);
    }
}
how can you use delegates in Java, not using inner classes?

we can use Reflection:

http://www.javacamp.org/javavscsharp/delegate.html
package mysorting;
public class Person implements Comparable
{
    // fields
    private String name; // the person's name
    private int maximumBooks;
  
    // constructor
    public Person(String n)
    {
        name = n;
        maximumBooks = 3;
    }
   
    // getters and setters
    public String getName()
    {
        return name;
    }
  
    public void setName(String n)
    {
        name = n;
    }

    public int getMaximumBooks() {
        return maximumBooks;
    }

    public void setMaximumBooks(int maxBooks) {
        maximumBooks = maxBooks;
    }
   
    public String toString()
    {
        return getName() + " (" + getMaximumBooks() + " books)";
    }

    @Override
    public int compareTo(Object arg0) {
        Person p1 = (Person)arg0;
        if (name.compareTo(p1.getName()) == 0 )
            return 0;
        else if (name.compareTo(p1.getName()) < 0)
            return -1;
        else if (name.compareTo(p1.getName()) > 0)
            return +1;
        return 0;
    }
}
  
package mysorting;

public class Sorting
{
    public static void BubbleSort(Person a[])
    {
        for (int i = 0; i < a.length - 1; i++)
        {
            for (int j = 0; j < a.length - i - 1; j++)
            {
                if (a[j].compareTo(a[j+1]) > 0)
                {
                    Person temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                } // end if
            } // end for j
        } // end for i
    } // end method Bubblesort
   
    public static void main(String args[])
    {
        Person a[] = new Person[4];
        a[0] = new Person("mary");
        a[1] = new Person("jeremy");
        a[2] = new Person("susan");
        a[3] = new Person("josh");
       
        Sorting.BubbleSort(a);
        for (Person x : a)
            System.out.println(x);
    }
}

Tuesday, July 27, 2010

package mysorting;

public class Sorting
{
    public static void BubbleSort(int a[])
    {
        for (int i = 0; i < a.length - 1; i++)
        {
            for (int j = 0; j < a.length - i - 1; j++)
            {
                if (a[j] > a[j+1])
                {
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                } // end if
            } // end for j
        } // end for i
    } // end method Bubblesort
   
    public static void main(String args[])
    {
        int a[] = new int [4];
        a[0] = 5;
        a[1] = 2;
        a[2] = 9;
        a[3] = 1;
       
        Sorting.BubbleSort(a);
        for (Integer x : a)
            System.out.println(x);
    }
}

Thursday, July 22, 2010

package myexceptions;

public class ExceptionExample1 {
    public static void printf(String arg0) throws MyException
    {
        if (arg0 == null || arg0.length() < 5)
            throw new MyException("string too short");
        System.out.println(arg0);
    }
   
    public static void main(String[] args) throws MyException
    {
        printf("hi");
            try
            {
                printf("hello world");
                printf("hi");
                if (true)
                {
                    throw new MyException("silly error");
                   
                }
                System.out.println("Hello");
            }
            catch (MyException e)
            {
                System.out.println(e.errmessage);
            }
            catch (IndexOutOfBoundsException e)
            {
               
            }
            catch (Exception e)
            {
           
            }
        System.out.println("And then we come here");
    }
}

class MyException extends Exception
{
    String errmessage;
    public MyException(String errmess)
    {
        errmessage = errmess;
    }
}
package rmiExample;

import java.rmi.Naming;

public class RmiServer {
     /**
       * Server program for the "Hello, world!" example.
       * @param argv The command line arguments which are ignored.
       */
      public static void main (String[] argv) {
        try {
          Naming.rebind ("Hello", new Hello ("Hello, world!"));
          System.out.println ("Hello Server is ready.");
        } catch (Exception e) {
          System.out.println ("Hello Server failed: " + e);
        }
      }

}