View Single Post
Old 10-22-2008, 07:52 AM   PM User | #7
Fou-Lu
God Emperor


 
Fou-Lu's Avatar
 
Join Date: Sep 2002
Location: Saskatoon, Saskatchewan
Posts: 15,658
Thanks: 4
Thanked 2,451 Times in 2,420 Posts
Fou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to all
You guys are thinking too hard :P
There are tons of ways to do this, from creating you're own sorts, you're own collections, and so forth. But the easiest ways are already built in.
You need to implement a Comparable interface (I'm using generics here, but you can do this without and using 1.4), and make use of the Collections object:
Please note that my main is fluffed since I'm too lazy to create 15 employees by hand :P
Code:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;


public class Employee implements Comparable<Employee>
{
	private int iEmpNum;
	private String sFName;
	private String sLName;
	
	public Employee(int iEmpNum, String sFName, String sLName)
	{
		this.iEmpNum = iEmpNum;
		this.sFName = sFName;
		this.sLName = sLName;
	}
	
	public String toString()
	{
		return "Employee[iEmpNum=" + this.iEmpNum + ", sFName=" + this.sFName + 
				", sLName=" + this.sLName + "]";
	}
	
	@Override
	public int compareTo(Employee argv)
	{
		return this.iEmpNum - argv.iEmpNum;
	}

	
	public static void main(String[] argv)
	{
		int iNumEmployees = 15;
		Employee[] aEmployee = new Employee[iNumEmployees];
		ArrayList<String> alFNames = new ArrayList<String>();
		alFNames.add("Kevin");
		alFNames.add("John");
		alFNames.add("Jane");
		alFNames.add("Allison");
		
		ArrayList<String> alLNames = new ArrayList<String>();
		alLNames.add("Smith");
		alLNames.add("Doe");
		alLNames.add("Johnson");
		alLNames.add("Thompson");
		
		for (int i = 0; i < iNumEmployees; i++)
		{
			Collections.shuffle(alFNames);
			Collections.shuffle(alLNames);
			String sFName = alFNames.get(0);
			String sLName = alLNames.get(0);
			int iEmpNum = (int)(Math.random() * 100);
			aEmployee[i] = new Employee(iEmpNum, sFName, sLName);
		}
		
		// Print unsorted.
		System.out.println("Unsorted List: ");
		for(Employee e:aEmployee)
		{
			System.out.println(e);
		}
		
		// Print sorted.
		Arrays.sort(aEmployee);
		System.out.println("\nSorted List: ");
		for(Employee e:aEmployee)
		{
			System.out.println(e);
		}		
		
		/**********************************************************************
		 * THIS IS WHAT MAKES IT RSORT
		 **********************************************************************/
		Arrays.sort(aEmployee, Collections.reverseOrder());
		System.out.println("\nReverse Sorted List: ");
		for(Employee e:aEmployee)
		{
			System.out.println(e);
		}		
	}
}
And Sample Output:
Code:
Unsorted List: 
Employee[iEmpNum=31, sFName=John, sLName=Doe]
Employee[iEmpNum=26, sFName=Jane, sLName=Johnson]
Employee[iEmpNum=2, sFName=John, sLName=Thompson]
Employee[iEmpNum=74, sFName=Kevin, sLName=Doe]
Employee[iEmpNum=48, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=70, sFName=John, sLName=Smith]
Employee[iEmpNum=7, sFName=Kevin, sLName=Smith]
Employee[iEmpNum=31, sFName=John, sLName=Johnson]
Employee[iEmpNum=18, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=2, sFName=John, sLName=Doe]
Employee[iEmpNum=41, sFName=Allison, sLName=Thompson]
Employee[iEmpNum=74, sFName=Kevin, sLName=Thompson]
Employee[iEmpNum=22, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=64, sFName=Kevin, sLName=Doe]
Employee[iEmpNum=80, sFName=Allison, sLName=Smith]

Sorted List: 
Employee[iEmpNum=2, sFName=John, sLName=Thompson]
Employee[iEmpNum=2, sFName=John, sLName=Doe]
Employee[iEmpNum=7, sFName=Kevin, sLName=Smith]
Employee[iEmpNum=18, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=22, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=26, sFName=Jane, sLName=Johnson]
Employee[iEmpNum=31, sFName=John, sLName=Doe]
Employee[iEmpNum=31, sFName=John, sLName=Johnson]
Employee[iEmpNum=41, sFName=Allison, sLName=Thompson]
Employee[iEmpNum=48, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=64, sFName=Kevin, sLName=Doe]
Employee[iEmpNum=70, sFName=John, sLName=Smith]
Employee[iEmpNum=74, sFName=Kevin, sLName=Doe]
Employee[iEmpNum=74, sFName=Kevin, sLName=Thompson]
Employee[iEmpNum=80, sFName=Allison, sLName=Smith]

Reverse Sorted List: 
Employee[iEmpNum=80, sFName=Allison, sLName=Smith]
Employee[iEmpNum=74, sFName=Kevin, sLName=Doe]
Employee[iEmpNum=74, sFName=Kevin, sLName=Thompson]
Employee[iEmpNum=70, sFName=John, sLName=Smith]
Employee[iEmpNum=64, sFName=Kevin, sLName=Doe]
Employee[iEmpNum=48, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=41, sFName=Allison, sLName=Thompson]
Employee[iEmpNum=31, sFName=John, sLName=Doe]
Employee[iEmpNum=31, sFName=John, sLName=Johnson]
Employee[iEmpNum=26, sFName=Jane, sLName=Johnson]
Employee[iEmpNum=22, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=18, sFName=Allison, sLName=Johnson]
Employee[iEmpNum=7, sFName=Kevin, sLName=Smith]
Employee[iEmpNum=2, sFName=John, sLName=Thompson]
Employee[iEmpNum=2, sFName=John, sLName=Doe]
This kinda what you're looking for? Works great from you're main, all you need to do is ensure that compareTo exists through Comparable, and that you use Arrays.sort(yourstack, Collections.reverseOrder()). Simple as that
__________________
As of PHP 5.5, the MySQL library has been officially deprecated. It is recommended to move to either MySQLi or PDO libraries for your mysql connectivity. See here for help choosing which interface you prefer: http://php.net/manual/en/mysqlinfo.api.choosing.php
Fou-Lu is offline   Reply With Quote