heap интерфейс за масиви и свързани списъци, използващи 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
Трябва да напишете интерфейс на Heap, който дефинира всички методи, които клиентът може да извика на екземпляр от вашата купчина. След това напишете два класа, които имплементират този нов интерфейс и използват версия на масив (клас 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, както следва

„Трябва да напишете интерфейс на Heap, който дефинира всички методи, които клиентът може да извика на екземпляр от вашата купчина. След това напишете два класа, които имплементират този нов интерфейс и използват масив (клас 1) или версия на LinkedList (клас 2)“

След като последвах това, се натъкнах на няколко проблема, които добавих към първоначалния си пост под РЕДАКТИРАНЕ. Оказа се, че това са проблеми с декларацията за реализацията на интерфейса на купчината и реализацията на масива.

Фиксираните декларации

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