github.com/gogf/gf@v1.16.9/.example/container/gtree/gtree_redblackmap.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gogf/gf/container/gtree" 7 "github.com/gogf/gf/util/gutil" 8 ) 9 10 func main() { 11 m := gtree.NewRedBlackTree(gutil.ComparatorInt) 12 13 // 设置键值对 14 for i := 0; i < 10; i++ { 15 m.Set(i, i*10) 16 } 17 // 查询大小 18 fmt.Println(m.Size()) 19 // 批量设置键值对(不同的数据类型对象参数不同) 20 m.Sets(map[interface{}]interface{}{ 21 10: 10, 22 11: 11, 23 }) 24 fmt.Println(m.Size()) 25 26 // 查询是否存在 27 fmt.Println(m.Contains(1)) 28 29 // 查询键值 30 fmt.Println(m.Get(1)) 31 32 // 删除数据项 33 m.Remove(9) 34 fmt.Println(m.Size()) 35 36 // 批量删除 37 m.Removes([]interface{}{10, 11}) 38 fmt.Println(m.Size()) 39 40 // 当前键名列表(随机排序) 41 fmt.Println(m.Keys()) 42 // 当前键值列表(随机排序) 43 fmt.Println(m.Values()) 44 45 // 查询键名,当键值不存在时,写入给定的默认值 46 fmt.Println(m.GetOrSet(100, 100)) 47 48 // 删除键值对,并返回对应的键值 49 fmt.Println(m.Remove(100)) 50 51 // 遍历map 52 m.IteratorAsc(func(k interface{}, v interface{}) bool { 53 fmt.Printf("%v:%v ", k, v) 54 return true 55 }) 56 fmt.Println() 57 58 // 清空map 59 m.Clear() 60 61 // 判断map是否为空 62 fmt.Println(m.IsEmpty()) 63 }