3

我被要求将程序转换为在我的数组中使用泛型类型。

我不知道从哪里开始。我试图将数组转换为泛型,但我一直遇到问题。

我试图通过使用将数组转换为泛型数组,queArray = (T[]) (new Comparable[maxSize]);但是在我修改所有变量以假设使用泛型类型之后,我不断收到错误。

我必须在这里改变什么?

4

3 回答 3

3

你要声明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,
于 2012-10-17T05:25:37.460 回答
2

目前还不清楚你想要什么,但我会猜测......

限制您的类型(已编辑 - 是<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);
于 2012-10-17T05:22:51.263 回答
1

在下面更新以通过只要

  thePQ.insert(30L);
  thePQ.insert(50L);
  thePQ.insert(10L);
  thePQ.insert(40L);
  thePQ.insert(20L);
于 2012-10-17T05:23:02.953 回答