GoFrame?gtree樹(shù)形結(jié)構(gòu)的使用技巧示例
樹(shù)形結(jié)構(gòu)
樹(shù)形結(jié)構(gòu)gtree具有以下特點(diǎn):
- 支持排序,支持有序遍歷
- 內(nèi)存占用低
- 復(fù)雜度穩(wěn)定
- 適合大數(shù)據(jù)量存儲(chǔ)
一圖勝千言
查詢?cè)创a
使用場(chǎng)景
- 關(guān)聯(lián)數(shù)組場(chǎng)景
- 大數(shù)據(jù)量?jī)?nèi)存CRUD
- 排序鍵值對(duì)(后面的示例就是前序遍歷和后序遍歷)
使用入門(mén)
我們以實(shí)例化紅黑樹(shù)為例(實(shí)例化B樹(shù)、高度平衡樹(shù)也是一樣的方式)
常用方法
Set() 賦值
Keys() 獲得鍵列表
Values() 獲得值列表
Contains() 判斷是否包含指定的key
t.Print() 可以直接打印樹(shù)形結(jié)構(gòu)
也可以通過(guò)常規(guī)方式打印樹(shù)形結(jié)構(gòu):fmt.Println(t.String())
Iterator() 相關(guān)的方法進(jìn)行樹(shù)的遍歷
Clear() 清空數(shù)
IsEmpty() 判斷數(shù)是否為空
示例代碼
package main import ( "fmt" "github.com/gogf/gf/container/gtree" "github.com/gogf/gf/util/gutil" ) func main() { //實(shí)例化tree t := gtree.NewRedBlackTree(gutil.ComparatorInt) t.Set(-1, -1) for i := 0; i < 10; i++ { t.Set(i, i*10) } fmt.Println("鍵列表:", t.Keys()) fmt.Println("值列表:", t.Values()) // 查詢是否包含 fmt.Println(t.Contains(-1)) fmt.Println("下面是使用t.Print()打印的樹(shù)形結(jié)構(gòu):") t.Print() //打印出樹(shù)形結(jié)構(gòu) fmt.Println("下面是使用fmt.Println(t.String())打印的樹(shù)形結(jié)構(gòu):") fmt.Println(t.String()) //和上面一樣 也是打印出了樹(shù)形結(jié)構(gòu) t.IteratorDesc(func(key, value interface{}) bool { fmt.Println("倒序遍歷:", key, value) return true }) t.Clear() fmt.Println(t.IsEmpty()) //true }
打印結(jié)果
技巧
最近幾篇文章都提到了數(shù)據(jù)類型的排序,GoFrame提供的gutil提供了基本數(shù)據(jù)類型常用的比較方法。
(因?yàn)榻裉焐衔缱x了一篇閱讀源碼的文章,深受啟發(fā),所以自己也要多多讀讀源碼了,看下大佬們是怎么寫(xiě)的代碼的。)
以上就是GoFrame gtree樹(shù)形結(jié)構(gòu)的使用技巧示例的詳細(xì)內(nèi)容,更多關(guān)于GoFrame gtree樹(shù)形結(jié)構(gòu)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang string、int、int64 float 互相轉(zhuǎn)換方式
這篇文章主要介紹了golang string、int、int64 float 互相轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Go語(yǔ)言實(shí)戰(zhàn)之實(shí)現(xiàn)一個(gè)簡(jiǎn)單分布式系統(tǒng)
如今很多云原生系統(tǒng)、分布式系統(tǒng),例如?Kubernetes,都是用?Go?語(yǔ)言寫(xiě)的,這是因?yàn)?Go?語(yǔ)言天然支持異步編程。本篇文章將介紹如何用?Go?語(yǔ)言編寫(xiě)一個(gè)簡(jiǎn)單的分布式系統(tǒng),需要的小伙伴開(kāi)業(yè)跟隨小編一起學(xué)習(xí)一下2022-10-10構(gòu)建Golang應(yīng)用最小Docker鏡像的實(shí)現(xiàn)
這篇文章主要介紹了構(gòu)建Golang應(yīng)用最小Docker鏡像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05