逆向工程 – 憂鬱的LinkedList在Java 6使用

這是ㄚ琪在是深入淺出 Java 程式設計 第二版第十六章的集合與泛型中的一個練習,這個練習主要是練習Comparator的使用,但是跟前文使用的ArrayList有點不同,這個練習改用LinkedList來測試。

image

ㄚ琪功力還算不錯,一樣照葫蘆寫了一隻程式,答案在p.577

image

可是如果在Java 1.6.0_29下編譯,發現會有

SortMountains.java:3: type LinkedList does not take parameters

這樣的錯誤,ㄚ琪注意到課本是使用Java 5.0

去查手冊

在1.4.2的版本中類別定義:

public class LinkedList
extends AbstractSequentialList
implements List, Cloneable, Serializable

在1.5.0的版本中類別定義:

public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Queue<E>, Cloneable, Serializable
在1.6版本中類別定義又有些變化:
public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, Serializable
看到一堆很麻煩的定義,卻查不到相關的範例程式碼使用,我猜很多都是for 1.4版用的,ㄚ琪可以自行改成
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
public class SortMountains {
    LinkedList mtn = new LinkedList();

    class NameCompare implements Comparator {
        public int compare(Mountain one,Mountain two) {
            return one.name.compareTo(two.name);
        }
    }
    class HeightCompare implements Comparator {
        public int compare(Mountain one,Mountain two) {
            return two.height-one.height;
        }   
    }
    public static void main(String[] args) {
        new SortMountains().go();
    }
    public void go() {
        mtn.add(new Mountain("Longs",14255));
        mtn.add(new Mountain("Elbert",14433));
        mtn.add(new Mountain("Maroon",14156));
        mtn.add(new Mountain("Castle",14265));

        System.out.println("as entered:n"+mtn);
        NameCompare nc = new NameCompare();
        Collections.sort(mtn,nc);
        System.out.println("by name:n"+mtn);
        HeightCompare hc = new HeightCompare();
        Collections.sort(mtn,hc);
        System.out.println("by height:n"+mtn);
    }
}
class Mountain {
    String name;
    int height;   

    Mountain(String n,int h) {
        name = n;
        height = h;        
    }    
    public String toString() {
        return name+ " "+ height;
    }    

}

但是還在想有沒法子只要匯入java.util.*,這樣就好呢?昨天去圖書館翻了一下書,還是沒看到,不是版本太舊,就是內容太少,沒有提到LinkedList的使用,看來還頗難的,如果有觀眾知道的話,還請告知方法,不能ㄚ琪可能會一直憂鬱下去了。

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *