逆向工程 – 忧郁的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的使用,看来还颇难的,如果有观众知道的话,还请告知方法,不能ㄚ琪可能会一直忧郁下去了。