簡體   English   中英

帶隊列和鏈接列表的CompareTo

[英]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規則就像隊列一樣正確

如果這是一個堆棧,而這是一個隊列,則您的猜測將是正確的。 隊列是FIFO數據結構(先進先出),這意味着最先添加的項將在隊列的頂部(在本例中為Carl)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM