我在下面,這使得使用比較發達..關於compartor條件
這是我的POJO ..
class Emp
{
String name,job;
int salary;
public Emp(String n,String j,int sal)
{
name=n;
job=j;
salary=sal;
}
public void display()
{
System.out.println(name+"\t"+job+"\t"+salary);
}
public boolean equals(Object o)
{
Emp p=(Emp)o;
return this.name.equals(p.name)&&this.job.equals(p.job) &&this.salary==p.salary;
}
public int hashCode()
{
return name.hashCode()+job.hashCode()+salary;
}
}
這是我的用戶定義的集合類集..
ArrayList list=new ArrayList();
list.add(new Emp("Ram","Trainer",34000));
list.add(new Emp("Sachin","Programmer",24000));
list.add(new Emp("Priyanka","Manager",54000));
list.add(1,new Emp("Ravi","Administrator",44000));
list.add(new Emp("Anupam","Programmer",34000));
list.add(new Emp("Sachin","Team Leader",54000));
System.out.println("There are "+list.size()+" elements in the list.");
System.out.println("Content of list are : ");
ListIterator itr=list.listIterator();
System.out.println("Sort Object according to Salary");
Collections.sort(list,new SalaryComparator());
System.out.println("Content of list are : ");
itr=list.listIterator();
while(itr.hasNext())
{
Emp e=(Emp)itr.next();
e.display();
}
}
最後我的比較級
class SalaryComparator
implements Comparator
{
public int compare(Object paramObject1, Object paramObject2)
{
Emp localEmp1 = (Emp)paramObject1;
Emp localEmp2 = (Emp)paramObject2;
return localEmp1.salary - localEmp2.salary;
}
}
現在它是按照遞增的順序在工資的基礎上進行排序,但是請建議我如何在分類中實施邏輯,以便首先對工資的基礎進行排序然後在工作的基礎上,即第一個工資然後工作,請指教。
使用IF塊。如果工資相等,則根據比較結果進行下一個比較並將結果返回爲-1,0或1。 –
@ HovercraftFullOfEels ..可以請你詳細解釋一下,如果可能的話,然後編碼,這將使理解更清晰,非常感謝 – user1380194
順便說一句,你應該真正閱讀泛型。您使用的原始類型自Java 1.5以來已被半棄用(大約8年)。 – yshavit