3

我有一个点列表。我将其表示为 ArrayLists 的 ArrayList。我正在尝试使用泛型,以便列表可以存储整数、浮点数等,并以同样的方式对待它们。所以我有:

ArrayList<ArrayList<? extends Number>>. 

我需要根据每个内部列表中的一个元素来比较这些列表。

为此,我编写了一个在 Collections.sort 中使用的自定义比较器

比较器看起来像:

int compare(ArrayList<? extends Number> a, ArrayList<? extends Number> b )
{
    return a.get(index).compareTo(b.get(index))
}

这当然不会编译。编译器抱怨通配符类没有 compareTo 方法。

我想要做的甚至可能吗?

4

1 回答 1

5

如何将您的Comparator课程定义为:

class MyComparator<T extends Number & Comparable<T>> 
                                          implements Comparator<ArrayList<T>> {
    @Override
    public int compare(ArrayList<T> a, ArrayList<T> b) {
        return a.get(index).compareTo(b.get(index));
    }
}
于 2012-11-07T02:50:33.380 回答