GoFrame gtree樹形結構的使用技巧示例
樹形結構
樹形結構gtree具有以下特點:
- 支持排序,支持有序遍歷
- 內存占用低
- 復雜度穩定
- 適合大數據量存儲
一圖勝千言
查詢源碼
使用場景
- 關聯數組場景
- 大數據量內存CRUD
- 排序鍵值對(後面的示例就是前序遍歷和後序遍歷)
使用入門
我們以實例化紅黑樹為例(實例化B樹、高度平衡樹也是一樣的方式)
常用方法
Set() 賦值
Keys() 獲得鍵列表
Values() 獲得值列表
Contains() 判斷是否包含指定的key
t.Print() 可以直接打印樹形結構
也可以通過常規方式打印樹形結構:fmt.Println(t.String())
Iterator() 相關的方法進行樹的遍歷
Clear() 清空數
IsEmpty() 判斷數是否為空
示例代碼
package main import ( "fmt" "github.com/gogf/gf/container/gtree" "github.com/gogf/gf/util/gutil" ) func main() { //實例化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()打印的樹形結構:") t.Print() //打印出樹形結構 fmt.Println("下面是使用fmt.Println(t.String())打印的樹形結構:") fmt.Println(t.String()) //和上面一樣 也是打印出瞭樹形結構 t.IteratorDesc(func(key, value interface{}) bool { fmt.Println("倒序遍歷:", key, value) return true }) t.Clear() fmt.Println(t.IsEmpty()) //true }
打印結果
技巧
最近幾篇文章都提到瞭數據類型的排序,GoFrame提供的gutil提供瞭基本數據類型常用的比較方法。
(因為今天上午讀瞭一篇閱讀源碼的文章,深受啟發,所以自己也要多多讀讀源碼瞭,看下大佬們是怎麼寫的代碼的。)
以上就是GoFrame gtree樹形結構的使用技巧示例的詳細內容,更多關於GoFrame gtree樹形結構的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- GoFrame框架garray對比PHP的array優勢
- GoFrame glist 基礎使用和自定義遍歷
- GoFrame框架gset使用對比PHP Java Redis優勢
- goFrame的隊列gqueue對比channel使用詳解
- GoFrame通用類型變量gvar與interface基本使用對比