Set Comparator不是通用的;它不能用参数参数化

时间:2014-02-24 14:33:40

标签: java set comparator

作为Java的初学者,我在尝试将自定义比较器分配给集合时遇到以下编译错误:

  

mycode.pointComparator类型不是通用的;它不可能是   参数化参数

这是我的代码:

Set<Point3d> cornerPoints = new TreeSet<Point3d>(new pointComparator<Point3d>());

class pointComparator implements Comparator<Point3d> {

        @Override
        public int compare(Point3d o1, Point3d o2) {
            if(!o1.equals(o2)){
                return -1;
            }
            return 0;
        }
    }

我正在导入Java.util.个套件

更新: 删除<Point3d>参数会导致此错误:

  

无法访问mycode类型的封闭实例。必须符合资格   使用mycode类型的封闭实例进行分配   (例如x.new A(),其中x是mycode的一个实例)。

1 个答案:

答案 0 :(得分:2)

这有效:

public static void main(String[] args) throws Exception {
    // Look at the following line: diamond operator and new.
    Set<Point> points = new TreeSet<>(new PointComparator());
}

static class PointComparator implements Comparator<Point> {

    @Override
    public int compare(Point p1, Point p2) {
        if (!p1.equals(p2)) {
            return -1;
        }
        return 0;
    }
}