![](/img/trans.png)
[英]How to sort a guava table by row natural order and column insertion order
[英]How to sort linkedlist on some natural order?
我們有一個鏈表,這個鏈表的元素是Employee,我想根據Employee的工資對這個鏈表進行排序,工資是Employee Class的一個成員,我們可以使用Collections.sort()嗎? 如果沒有,我該如何排序呢? 有人能解釋一下嗎?
是的,你可以使用Collections.sort()
您需要讓Employee
類實現Comparable
接口。
http://download.oracle.com/javase/6/docs/api/java/lang/Comparable.html
在compareTo()
方法中,您可以將當前對象的工資與傳入的對象的工資進行比較。
編輯:
如果您不希望將其作為默認比較,那么您擁有的另一個選項是創建Comparator
對象並使用第二種形式 - > Collections.sort(List, Comparator);
它看起來像這樣:
class SalaryComparator implements Comparator<Employee>
{
public int compare(Employee e1, Employee e2)
{
if (e1.getSalary() > e2.getSalary())
return 1;
else if (e1.getSalary() < e2.getSalary())
return -1;
else
return 0;
}
}
現在你可以這樣做: Collections.sort(myEmployeeList, new SalaryComparator());
雖然LinkedList<Employee>
可以工作,但我會使用ArrayList<Employee>
:
List<Employee> employees = new ArrayList<Employee>();
填充后(無論哪種方式),您可以按工資對其進行排序,如下所示:
Collections.sort(employees, new Comparator<Employee>() {
public int compare(Employee e1, Employee e2) {
return e1.getSalary() - e2.getSalary();
}
});
你可以使用Collections.sort()
但是為了做到這一點,您的Employee類需要首先實現Comparable接口。
一個粗略的例子是:
public class Employee implements Comparable<Employee>
{
public int compareTo(Employee e)
{
return this.salary - e.salary;
}
}
您可以對鏈接列表進行排序,但這不是一種有效的操作,尤其是如果列表的大小不是很小的話。 選擇適當的數據結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.