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  }