我被要求将程序转换为在我的数组中使用泛型类型。
我不知道从哪里开始。我试图将数组转换为泛型,但我一直遇到问题。
我试图通过使用将数组转换为泛型数组,queArray = (T[]) (new Comparable[maxSize]);
但是在我修改所有变量以假设使用泛型类型之后,我不断收到错误。
我必须在这里改变什么?
我被要求将程序转换为在我的数组中使用泛型类型。
我不知道从哪里开始。我试图将数组转换为泛型,但我一直遇到问题。
我试图通过使用将数组转换为泛型数组,queArray = (T[]) (new Comparable[maxSize]);
但是在我修改所有变量以假设使用泛型类型之后,我不断收到错误。
我必须在这里改变什么?
你要声明T
必须实现Comparable
。这允许您明确声明PriorityQ
只能支持可以比较排序的类。这样做是这样的:
class PriorityQ<T extends Comparable<T>>
现在queArray
应该new
作为一个数组编辑,T
因为它PriorityQ
是排序类型的实例T
:
queArray = new T[maxSize];
最后,使用该Comparable.compareTo
方法进行比较:
if( item .compareTo(queArray[j]) > 0 ) // if new item larger,
目前还不清楚你想要什么,但我会猜测......
限制您的类型(已编辑 - 是<T extends Number>
,但未Number
实现Comparable
):
class PriorityQ<T extends Number & Comparable<T>>
将您的方法更改为 return T
,例如:
public T peekMin()
然后对于Long
实施,只需:
PriorityQ<Long> pqLong = new PriorityQ<Long>(9);
在下面更新以通过只要
thePQ.insert(30L);
thePQ.insert(50L);
thePQ.insert(10L);
thePQ.insert(40L);
thePQ.insert(20L);