[英]CompareTo with Queue and Linkedlist
我正在為即將進行的考試做一些修訂。 我遇到了講師提供給我們的代碼,以供修訂。
碼:
public class Employee implements Comparable<Employee>{
private String name;
public Integer idNumber;
public Employee(String name,int idNumber){
this.name = name;
this.idNumber = idNumber;
}
public String toString(){
return this.name+": "+idNumber;
}
@Override
public int compareTo(Employee o) {
return this.idNumber.compareTo(o.idNumber);
}
public static void main(String args[]){
Queue<Employee> queue = newLinkedList<Employee>();
queue.add(new Employee("Carl",2));
queue.add(new Employee("Alice",1));
queue.add(new Employee("Bob",3));
queue.add(new Employee("Danny",4));
System.out.println(queue.peek());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.peek());
System.out.println(queue.remove());
}
}
我們被要求寫下控制台輸出。 我的猜測是:
Danny:4
Danny:4
Bob:3
Carl:2
Alice:1
Alice:1
錯了,通過Eclipse運行時,結果是:
Carl: 2
Carl: 2
Alice: 1
Bob: 3
Danny: 4
Danny: 4
有人可以幫忙解釋我哪里出問題了。 我以為是:
@Override
public int compareTo(Employee o) {
return this.idNumber.compareTo(o.idNumber);
}
按數字順序從0-4訂購ID
謝謝
您永遠不會在列表上調用任何排序方法。 因此,您的compareTo
方法將被忽略。
如果這是一個堆棧,而這是一個隊列,則您的猜測將是正確的。 隊列是FIFO數據結構(先進先出),這意味着最先添加的項將在隊列的頂部(在本例中為Carl)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.