0

我创建了自己的“LinkedList”类,它可以接收用泛型指定的对象。

在那个类中,我想要一个sort(ComparatorObject)方法,该方法接受一个类实现了 Comparator 的对象。

原因是对于我的测试对象,特别是形状,我想看看我是否可以按用户选择的各种字段对它们进行排序,例如形状的面积、周长、类型等。

现在,我的比较器类之一是这样定义的:

public class Comparator_Area implements Comparator<Shape>{

@Override
public int compare(Shape shape1, Shape shape2) {
    int valueToReturn = 0;

    if(shape1.getArea() < shape2.getArea()){
        valueToReturn = -1;
    }
    else if(shape1.getArea() < shape2.getArea()){
        valueToReturn = 1;
    }

    return valueToReturn;
}
}

在我的 LinkedList 类中,我的排序方法是这样定义的(我不知道它是否正确,但这是我在查找如何执行此操作时发现的):

public void sort(Class<? extends Comparator<E>> comparator){

}

自然,我希望能够在 sort 方法中使用这样的东西:

comparator.compare(shape1, shape2);

但我不能使用“比较”,我真的不知道我应该如何完成这个。

4

2 回答 2

3

Comparator您应该在排序方法中发送一个对象作为参数:

public void sort(Comparator<Shape> comparator){

}

这是假设您的 LinkedList 类仅属于Shapes。如果你有一个通用的 LinkedList 实现,那么你可以传递一个Comparator<T>

public class MyLinkedList<T> {
    //other methods...

    public void sort(Comparator<T> comparator){

    }
}
于 2012-10-28T18:53:52.703 回答
1

您将Class对象作为参数传递。请尝试以下操作:

public void sort(Comparator<T> comparator){

}

T你的泛型类型在哪里LinkedList

于 2012-10-28T18:56:22.843 回答