【问题标题】:How do I build a heap sort class without a specific type?如何构建没有特定类型的堆排序类?
【发布时间】:2018-11-06 06:17:08
【问题描述】:

这是我被要求执行的程序。我已经使用特定类型 (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()
}

【问题讨论】:

标签: java data-structures heapsort


【解决方案1】:

您需要在 Java 中使用泛型来编写与类型无关的程序。数组和泛型不能很好地结合在一起。因此,您可以考虑将ArrayList 与泛型类型一起使用,而不是裸数组。 ArrayList 仅在内部是一个数组,它具有智能分配一个新的更大的数组,并在原始数组空间不足时将所有内容从原始数组复制到新数组。虽然它从程序员那里抽象出所有这些复杂性,但它确实会产生成本。因此,在使用带有泛型的ArrayList 构建堆排序程序时,请确保使用ensureCapacity 方法或适当的构造函数来指定数组的预期大小。最后,为了比较通用对象,您需要传递一个适当的 Comparator 实现。

【讨论】:

  • 我明白了,但是在这堂课中我们甚至还没有涉及到。难道没有另一种方法可以在没有类型运算符的情况下使用类方法中的对象吗? ::
猜你喜欢
  • 1970-01-01
  • 2021-08-25
  • 2018-03-13
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多