package com.algo; import static java.lang.System.out; /** * 对象排序 * 该排序方法是插入排序的延伸。主要是以对对象的某一属性作插入排序 * */ public class ObjectSortTest { private static Person[] persons; static{ persons=new Person[7]; persons[0]=new Person("Andy","Liu",45); persons[1]=new Person("Jacket","Zong",43); persons[2]=new Person("Jim","Xu",50); persons[3]=new Person("Kenlin","Liu",47); persons[4]=new Person("GiGi","Liang",37); persons[5]=new Person("Beacher","Ma",25); persons[6]=new Person("Locas","Chen",5); } public static void main(String args[]){ //ObjectSortByLastName for(int i=1;i<persons.length;i++){ String temp=persons[i].getLastName(); Person pt=persons[i]; int j=i; while(j>0&&persons[j-1].getLastName().compareTo(temp)>0){ persons[j]=persons[j-1]; --j; } persons[j]=pt; pt=null; } //disPersons dis(); out.println("====InsertSortByAge======="); for(int i=1;i<persons.length;i++){ Person p=persons[i]; int temp=p.getAge(); int j=i; while(j>0&&persons[j-1].getAge()>temp){ persons[j]=persons[j-1]; --j; } persons[j]=p; p=null; } dis(); } public static void dis(){ for(Person p:persons){ p.dispalyPerson(); } } } class Person{ private String firstName; private String lastName; private int age; public int getAge(){ return age; } public String getLastName(){ return lastName; } public Person(String firstName,String lastName,int age){ this.firstName=firstName; this.lastName=lastName; this.age=age; } public Person(){} public void dispalyPerson(){ out.print("Last Name:"+lastName+" "); out.print("FirstName:"+firstName+" "); out.print("Age:"+age+"/n"); } }