интерфейс кучи для массивов и связанных списков с использованием java

Вопрос в этом

Ваша задача — реализовать кучу, которая может работать с любым резервным хранилищем. По сути, вам нужно сделать абстракцию на один шаг ниже — например, мы используем кучу, не беспокоясь о резервном хранилище, просто потому, что интерфейс хорошо определен. Поэтому вам необходимо спроектировать интерфейс для резервного хранилища, чтобы методы, реализующие интерфейс кучи, работали для любого резервного хранилища. Ваш код должен быть разработан на 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) внутри реализации массива, я получаю кучу ошибок


person fsociety    schedule 14.03.2015    source источник
comment
Вы неправильно интерпретировали вопрос! , Сделайте глубокий вдох, пожалуйста, прочитайте еще раз   -  person Neeraj Jain    schedule 14.03.2015
comment
Я читал это довольно много раз, я не вижу по-другому, не могли бы вы объяснить?   -  person fsociety    schedule 14.03.2015
comment
Вам нужно написать интерфейс кучи, который определяет все методы, которые клиент может вызывать для экземпляра вашей кучи. Затем напишите два класса, которые реализуют этот новый интерфейс и используют версию массива (класс 1) или LinkedList (класс 2).   -  person Tom    schedule 14.03.2015
comment
О, я вижу! спасибо, это было полезно :) одна небольшая проблема, что такое тип данных, который расширяет сопоставимый класс?   -  person fsociety    schedule 14.03.2015
comment
Что-то вроде public class Person implements Comparable<Person>. Имейте в виду, что Comparable — это интерфейс, а не класс.   -  person Tom    schedule 14.03.2015
comment
@Tom Я реализовал интерфейс и столкнулся с кучей проблем, я отредактировал вопрос, чтобы объяснить текущую ситуацию. Не был уверен, что нужно было создавать новую тему, если что, извиняюсь.   -  person fsociety    schedule 14.03.2015
comment
Эта куча проблем сопровождается кучей сообщений об ошибках, указывающих, что и где проблемы. Вам нужно прочитать их. Кроме того, по соглашению классы всегда начинаются с заглавной буквы. Я думаю, вы должны сказать своему учителю, что реализация универсальных коллекций — это сложная задача, которую не следует делать, если вы не научились правильно писать классы или читать сообщения об ошибках.   -  person JB Nizet    schedule 14.03.2015


Ответы (1)


Проблема заключалась в правильном понимании вопроса, который @Tom прекрасно объяснил следующим образом.

«Вам нужно написать интерфейс кучи, который определяет все методы, которые клиент может вызывать для экземпляра вашей кучи. Затем напишите два класса, которые реализуют этот новый интерфейс и используют массив (класс 1) или версию LinkedList (класс 2)».

После того, как я последовал этому, я столкнулся с несколькими проблемами, которые я добавил в свой первоначальный пост в разделе EDIT. Это оказалось проблемой объявления для реализации интерфейса кучи и реализации массива.

Фиксированные объявления

public interface HeapInterface<T>

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

Спасибо за помощь!

person fsociety    schedule 14.03.2015
comment
public interface HeapInterface<T> все еще может быть public interface HeapInterface<T extends Comparable<T>>, важно, чтобы вы использовали ...implements HeapInterface<T> вместо старого implements HeapInterface. Последний называется необработанным типом и совпадает с implements HeapInterface<Object>. - person Tom; 14.03.2015