Как создать класс сортировки кучи без определенного типа? - PullRequest
0 голосов
/ 06 ноября 2018

вот программа, которую меня просят сделать. Я уже сделал это с определенным типом (int), но делать это с типом объекта довольно запутанно.

public class HeapSort
{ 
    private Object[] data;
    private int partition;

    HeapSort(Object[] data);  // Class Constructor
    HeapSort(int size);       // Class Constructor

    public Object[] sort()           // Sorts the data
    public void insert(Object item); // Insert in Heap
    public Object extractMin();    // Remove from Heap

    private void bubbleUp()
    private void bubbleDown()
}

1 Ответ

0 голосов
/ 06 ноября 2018

Вам нужно использовать дженерики в Java для написания программ, независимых от типов. Массивы и дженерики не очень хорошо играют вместе. Поэтому вместо пустого массива вы можете рассмотреть возможность использования ArrayList с универсальным типом. ArrayList внутренне является только массивом, который обладает интеллектом для выделения нового большего массива и копирования всего из исходного массива в новый массив, когда в исходном массиве заканчивается свободное место. Хотя он отвлекает все эти сложности от программиста, он несет затраты. Следовательно, при использовании ArrayList с обобщениями для построения программы сортировки кучи убедитесь, что вы используете метод ensureCapacity или соответствующий конструктор, чтобы указать ожидаемый размер массива. Наконец, для сравнения универсальных объектов вам нужно передать соответствующую Comparator реализацию.

...