Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何子类化ConcurrentSkipListMap并设置其比较器?_Java_Subclass - Fatal编程技术网

Java 如何子类化ConcurrentSkipListMap并设置其比较器?

Java 如何子类化ConcurrentSkipListMap并设置其比较器?,java,subclass,Java,Subclass,我试图将ConcurrentSkipListMap子类化,并将其设置为不带任何锁的比较器。 以下是我所拥有的: // the subclass public class Queue<V, K> extends ConcurrentSkipListMap<K, V> { public Queue(Comparator<? super K> queueComparator) { // TODO Auto-generated constr

我试图将ConcurrentSkipListMap子类化,并将其设置为不带任何锁的比较器。 以下是我所拥有的:

// the subclass 
public class Queue<V, K> extends ConcurrentSkipListMap<K, V> {

    public Queue(Comparator<? super K> queueComparator) {
        // TODO Auto-generated constructor stub
        super(queueComparator);
    }

    public Queue(QueueComparator<Integer> queueComparator) {
        // TODO Auto-generated constructor stub
        super((Comparator<? super K>) queueComparator);
    }

}
//the comparator (QueueComparator)
public class QueueComparator<T> implements Comparator<T> {

    @Override
    public int compare(T o1, T o2) {
        // TODO Auto-generated method stub
        return 0;
    }

}

// main class init the subclass

Queue queue= new Queue<Integer,MYCLASS>(new QueueComparator<Integer>());
//子类
公共类队列扩展了ConcurrentSkipListMap{

公共队列(Comparator第二个构造函数是垃圾。请删除它

您的代码不会编译,因为您构建了一个以MYCLASS为键、Integer为值的队列,但提供了一个比较器来对Integer实例而不是MYCLASS实例进行排序

我猜您想要的是整数作为键。如果是这样,那么队列的类型应该是queue

或者,您可以遵守将键放在第一位、值放在第二位的约定,并将队列声明更改为

public class Queue<K, V> extends ConcurrentSkipListMap<K, V> {
公共类队列扩展了ConcurrentSkipListMap{

请注意,子类化集合通常不是一个好主意。通常最好将集合封装在对象中。

第二个构造函数是垃圾。请删除它

您的代码不会编译,因为您构建了一个以MYCLASS为键、Integer为值的队列,但提供了一个比较器来对Integer实例而不是MYCLASS实例进行排序

我猜您想要的是整数作为键。如果是这样,那么队列的类型应该是queue

或者,您可以遵守将键放在第一位、值放在第二位的约定,并将队列声明更改为

public class Queue<K, V> extends ConcurrentSkipListMap<K, V> {
公共类队列扩展了ConcurrentSkipListMap{
注意,对集合进行子类化通常不是一个好主意。通常最好将集合封装在对象中