Java實現可泛型的Heap

2021-08-26 07:22:43 字數 2218 閱讀 6909

可泛型的heap,方便使用。

heap介面:

public inte***ce heap
abstractheap類:

public class abstractheapimplements heap

/* * 帶comparator的構造器

* 如果com為null會丟擲illegalargumentexception

*/public abstractheap(comparatorcom, t elements)

/** 初始化heap中的arraylist

*/private void init(t elements)

system.out.println("queue length is : " + l.size());

system.out.println("content is : " + l);

} /*

* 得到堆頂的元素

*/@override

public object get()

/** 移除堆頂端元素,並重新維護heap

*/@override

public t remove()

/** 檢測heap是否為空

*/@override

public boolean isempty()

/** 情況heap中所有元素

*/@override

public void clear()

/** 將堆頂元素替換,並重新維護heap

*/@override

public void set(t obj)

/** 向heap中加入乙個元素

*/@override

public void add(t obj)

/** 比較器

*/protected int compare(int i, int j) throws nocomparableexception

else if (l.get(j) instanceof comparable)

else

}/* * 比較器

*/protected int compare(t i, t j) throws nocomparableexception

else if (i instanceof comparable)

else

}/* * 向上維護

*/private void fixup(int start)

} catch (nocomparableexception e)

l.set(k, s);

} /*

* 向下維護

*/private void fixdown(int k)

catch (nocomparableexception e)

l.set(j, l.get(r));

j = r;

r *= 2;

} l.set(j, ret);

}}

最小推,minheap:

public class minheapextends abstractheap

public minheap(comparatorcom, t elements)

/** 注意兩個引數比較的順序

*/@override

protected int compare(int i, int j) throws nocomparableexception

@override

protected int compare(t i, t j) throws nocomparableexception

}

最大堆,maxheap:

public class maxheapextends abstractheap

public maxheap(comparatorcom, t elements)

/** 注意兩個引數比較的順序

*/@override

protected int compare(int i, int j) throws nocomparableexception

@override

protected int compare(t i, t j) throws nocomparableexception

}

Java泛型的繼承和實現

一 點睛 泛型類和泛型介面被定義後,是可以被繼承和實現的。二 泛型類的繼承 1 class a public class bextends a 2 執行 b test3 說明 子類b在定義的時候,如果省略了a後,那麼b的t自動變成了object,建議定義時加入以保留父類的型別引數。b類還可以增加新的...

JAVA 泛型類,限制泛型和泛型方法

我在學習集合的時候對泛型還不太了解,只是覺得用了泛型之後能向自己的集合裡加入自己指定型別的物件,可以減少資料型別的轉換。那麼,脫離集合後,泛型到底該如何使用。今天碰巧看了一段關於泛型的講解,覺得泛型也沒有自己想象中那麼難,於是將自己的心得分享出來,希望能幫到有需要的人。泛型的知識點大概有 泛型類,限...

Java基礎 泛型 泛型介面 泛型類 泛型方法

一 二 三 泛型方法 1.public t test t t1,t t2 一 泛型 1.泛型產生的背景 原因1 集合中儲存資料時,編譯期間可以儲存任何型別的資料,導致取值時轉換出錯 原因2 每次取值都需要強制轉換,冗餘繁瑣 2.泛型的定義 泛型的本質是乙個引數化的型別 在程式編碼中一些包含引數的類 ...