我正确地将对象插入堆中

时间:2015-11-04 05:37:24

标签: java generics heap comparable

我正在学习使用泛型,并且在如何比较我的对象时遇到了一些问题。我创建了一个generic堆类,因此它可以接受任何类似的对象。我的问题是,如果我正在添加对象并正确使用generics,以便我可以接受任何类型的可比较对象。具体来说,我不确定我是否在addNode()方法中正确添加对象。

public class Heap<T extends Comparable<T>> {
private ArrayList<T> heap;
public Heap(){
    heap = new ArrayList<T>();
}
public int getSize(){
    return heap.size();
}
public boolean isEmpty(){
    return heap.isEmpty();
}
public int getPLoc(int i){
    return (i - 1) / 2;
}
public int getLCLoc(int i){
    return 2 * i + 1;
}
public int getRCLoc(int i){
    return 2 * i + 2;
}
public T getNodeAt(int i) {
    if(heap.get(i) == null) {
        System.out.println("Item does not exist.");
        return null;
    }else {
        return heap.get(i);
    }
}
public void addNode(T n) {
    heap.add(null);
    int index = heap.size() - 1;
    while(index > 0 && (getNodeAt(getPLoc(index)).compareTo(n) < 0)) { // Is this correct?
        heap.set(index, getNodeAt(getPLoc(index)));
        index = getPLoc(index);
    }
    heap.set(index, n);
}

0 个答案:

没有答案