转换程序以使用对象而不是数字

时间:2012-10-17 05:15:08

标签: java priority-queue

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

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

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

我需要在这里更改什么?

3 个答案:

答案 0 :(得分: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,

答案 1 :(得分:2)

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

对您的类型设置绑定(已修改 - <T extends Number>,但Number未实现Comparable):

class PriorityQ<T extends Number & Comparable<T>>

更改您的方法以返回T,例如:

public T peekMin()

然后对于Long实现,只需:

PriorityQ<Long> pqLong = new PriorityQ<Long>(9);

答案 2 :(得分:1)

下面更新以传递

  thePQ.insert(30L);
  thePQ.insert(50L);
  thePQ.insert(10L);
  thePQ.insert(40L);
  thePQ.insert(20L);