-2

我得到了一个程序,它使用整数输入来计算优先级队列。

如何重写代码来表示对象而不是整数?

我修改的问题是我的修改无法运行并说

4

2 回答 2

1

您的对象不是字符串,而是整数(长整数)。所以不要试图解析它们。

你可以改变

  if( Long.parseLong((String) item) > Long.parseLong((String) queArray[j]) )

  if ((Long) item) > (Long) queArray[j]) )

你也可以改变

public void insert(Object item)

public void insert(Long item)

为了避免演员。

但这不适用于 Long 以外的其他类型的对象,因此可能对您没有用处。

如果您希望能够比较任何类型的对象,您可以提供一个Comparator

您将定义PriorityQPriorityQ<T>(使用泛型),添加一个setComparator(Comparator comparator)方法,并像这样定义您的插入方法:

 public void insert(T item)
 ...

 if ((comparator.compare(item, queArray[j])>0) {

这意味着还将 queArray 数组更改为一种T[]类型。

于 2012-10-16T07:22:00.053 回答
0

问题是您insert(Object item)使用整数类型值调用该函数。

然后您尝试以这种方式将其转换为 String:(String) item.

这行不通。用于item.toString()将某些内容转换为字符串。

当您阅读它时,您应该阅读以下内容:Java 类型转换

于 2012-10-16T07:24:46.827 回答