【问题标题】:heap interface for arrays and linked lists using java使用 java 的数组和链表的堆接口
【发布时间】:2015-03-14 10:56:49
【问题描述】:

问题是这样的

您的任务是实现一个可与任何后备存储一起使用的堆。基本上,您需要将抽象降低一步——例如,我们使用堆而不用担心后备存储,仅仅是因为接口定义明确。所以需要为后台设计一个接口 存储,以便实现堆接口的方法适用于任何后备存储。您的代码应该用 Java 开发,并且它应该适用于扩展可比较类的任何数据类型。在这部分你只需要担心两个后备存储;数组和链接结构。您还需要为两个后备存储提供实现。

我很难理解究竟应该在这里做什么。我得到的是,无论后备存储类型(数组/链接列表)如何,接口都应该工作我如何在没有特定后备存储的情况下实现接口?该接口应该包括添加和删除功能。希望有人可以对这个问题有所了解。谢谢

编辑 这是我的堆接口,

public interface HeapInterface<T extends Comparable<T>>{
 public boolean isEmpty();
 public void add(T value);
 public T remove();
 public void show();
}

这是数组实现的声明

public class arrayHeap<T extends Comparable<T>> implements HeapInterface {

想知道声明是否有任何问题,因为一旦我在数组实现中实现 add(T value) 方法,我就会得到一堆错误

【问题讨论】:

  • 你把问题解释错了! , 深呼吸,请再读一遍
  • 我已经读了好几遍了,我不觉得有什么不同,你能解释一下吗?
  • 您需要编写一个 Heap 接口,该接口定义了客户端可以在您的堆实例上调用的所有方法。然后编写两个实现这个新接口的类,并使用数组(类 1)或 LinkedList(类 2)版本。
  • 哦,我明白了!谢谢,这很有帮助:) 一个小问题,什么是“扩展可比较类的数据类型”?
  • 这堆问题伴随着一堆错误消息,指出问题所在和位置。你需要阅读它们。此外,按照惯例,类总是以大写字母开头。我认为你应该告诉你的老师,实现泛型集合是一项高级任务,如果你还没有学会正确拼写类或阅读错误消息,就不应该这样做。

标签: java heap implementation


【解决方案1】:

问题在于正确理解问题,@Tom 很好地解释了如下

“您需要编写一个 Heap 接口,它定义了客户端可以在您的堆实例上调用的所有方法。然后编写两个实现这个新接口的类并使用数组(类 1)或 LinkedList(类 2)版本”

一旦我关注了这个,我遇到了一些问题,我将这些问题添加到了我在 EDIT 下的初始帖子中。这原来是堆接口实现和数组实现的声明问题。

固定声明

public interface HeapInterface<T>

public class ArrayHeap<T extends Comparable<T>> implements HeapInterface<T>

感谢大家的帮助!

【讨论】:

  • public interface HeapInterface&lt;T&gt; 仍然可以是 public interface HeapInterface&lt;T extends Comparable&lt;T&gt;&gt;,重要的是,您使用 ...implements HeapInterface&lt;T&gt; 而不是旧的 implements HeapInterface。后者称为原始类型,与implements HeapInterface&lt;Object&gt;相同。
猜你喜欢
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多