GoFrame?gtree樹形結(jié)構(gòu)的使用技巧示例
樹形結(jié)構(gòu)
樹形結(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ì)(后面的示例就是前序遍歷和后序遍歷)
使用入門
我們以實(shí)例化紅黑樹為例(實(shí)例化B樹、高度平衡樹也是一樣的方式)
常用方法
Set() 賦值
Keys() 獲得鍵列表
Values() 獲得值列表
Contains() 判斷是否包含指定的key
t.Print() 可以直接打印樹形結(jié)構(gòu)
也可以通過(guò)常規(guī)方式打印樹形結(jié)構(gòu):fmt.Println(t.String())
Iterator() 相關(guān)的方法進(jìn)行樹的遍歷
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()打印的樹形結(jié)構(gòu):")
t.Print() //打印出樹形結(jié)構(gòu)
fmt.Println("下面是使用fmt.Println(t.String())打印的樹形結(jié)構(gòu):")
fmt.Println(t.String()) //和上面一樣 也是打印出了樹形結(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ā),所以自己也要多多讀讀源碼了,看下大佬們是怎么寫的代碼的。)

以上就是GoFrame gtree樹形結(jié)構(gòu)的使用技巧示例的詳細(xì)內(nèi)容,更多關(guān)于GoFrame gtree樹形結(jié)構(gòu)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang讀取yaml配置文件的方法實(shí)現(xiàn)
本文主要介紹了golang讀取yaml配置文件的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
Go語(yǔ)言sync包與鎖實(shí)現(xiàn)限制線程對(duì)變量的訪問(wèn)
本文主要介紹了Go語(yǔ)言sync包與鎖實(shí)現(xiàn)限制線程對(duì)變量的訪問(wèn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Go語(yǔ)言特點(diǎn)及基本數(shù)據(jù)類型使用詳解
這篇文章主要為大家介紹了Go語(yǔ)言特點(diǎn)及基本數(shù)據(jù)類型使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
Go語(yǔ)言開發(fā)技巧必知的小細(xì)節(jié)提升效率
這篇文章主要介紹了Go語(yǔ)言開發(fā)技巧必知的小細(xì)節(jié)提升效率,分享幾個(gè)你可能不知道的Go語(yǔ)言小細(xì)節(jié),希望能幫助大家更好地學(xué)習(xí)這門語(yǔ)言2024-01-01
Go?interface{}?轉(zhuǎn)切片類型的實(shí)現(xiàn)方法
本文主要介紹了Go?interface{}?轉(zhuǎn)切片類型的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

