树形类

package
v0.0.0-...-058f7b3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

gtree 包提供了并发安全/不安全的树容器。

部分实现来源于:https://github.com/emirpasic/gods md5:d7058919da3c4b80

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type X结构_AVLTree

type X结构_AVLTree struct {
	// contains filtered or unexported fields
}

X结构_AVLTree 存储AVL树的元素。 md5:d108e2d6ca60747c

func NewAVLTree

func NewAVLTree(comparator func(v1, v2 interface{}) int, safe ...bool) *X结构_AVLTree

NewAVLTree 创建一个带有自定义键比较器的AVL树。 参数 `safe` 用于指定是否需要并发安全,默认为false。 md5:dfb13f71bc07620c

Example
package main

import (
	"fmt"

	gtree "gitee.com/go_888/goframe/container/gtree"
	gconv "gitee.com/go_888/goframe/util/gconv"

	gutil "gitee.com/go_888/goframe/util/gutil"
)

func main() {
	avlTree := gtree.NewAVLTree(gutil.X比较文本)
	for i := 0; i < 6; i++ {
		avlTree.X设置值("key"+gconv.String(i), "val"+gconv.String(i))
	}

	fmt.Println(avlTree)

}
Output:

│       ┌── key5
│   ┌── key4
└── key3
    │   ┌── key2
    └── key1
        └── key0

func NewAVLTreeFrom

func NewAVLTreeFrom(comparator func(v1, v2 interface{}) int, data map[interface{}]interface{}, safe ...bool) *X结构_AVLTree

NewAVLTreeFrom 使用自定义的键比较器和数据映射初始化一个AVL树。 参数`safe`用于指定是否在并发安全模式下使用树,其默认值为false。 md5:856b75ecd9dc1540

Example
package main

import (
	"fmt"

	gtree "gitee.com/go_888/goframe/container/gtree"
	gconv "gitee.com/go_888/goframe/util/gconv"

	gutil "gitee.com/go_888/goframe/util/gutil"
)

func main() {
	avlTree := gtree.NewAVLTree(gutil.X比较文本)
	for i := 0; i < 6; i++ {
		avlTree.X设置值("key"+gconv.String(i), "val"+gconv.String(i))
	}

	otherAvlTree := gtree.NewAVLTreeFrom(gutil.X比较文本, avlTree.Map())
	fmt.Println(otherAvlTree)

	// May Output:
	// │   ┌── key5
	// │   │   └── key4
	// └── key3
	//     │   ┌── key2
	//     └── key1
	//         └── key0
}
Output:

func (*X结构_AVLTree) Ceiling

func (tree *X结构_AVLTree) Ceiling(key interface{}) (ceiling *X结构_AVLTreeNode, 成功 bool)

Ceiling 找到输入键的天花板节点,如果没有找到天花板节点,则返回nil。第二个返回参数表示是否找到了天花板(true)或未找到(false)。

定义天花板节点为大于或等于给定节点的最小节点。可能找不到天花板节点,因为树为空,或者树中的所有节点都小于给定节点。

键应遵循比较器的类型断言,否则方法会 panic。 md5:6b92342a03f9f586

func (*X结构_AVLTree) Clear

func (tree *X结构_AVLTree) Clear()

Clear 从树中移除所有节点。 md5:a7db742922264980

func (*X结构_AVLTree) Contains

func (tree *X结构_AVLTree) Contains(key interface{}) bool

Contains 检查键 `key` 是否存在于树中。 md5:77fd85af8e586867

func (*X结构_AVLTree) Flip

func (tree *X结构_AVLTree) Flip(comparator ...func(v1, v2 interface{}) int)

Flip 将树中的键值对交换为值键。 请注意,你应该确保值的类型与键相同,否则比较器会panic。

如果值的类型与键不同,你需要传递新的 `comparator`。 md5:e71ceac22aee55f1

func (*X结构_AVLTree) Floor

func (tree *X结构_AVLTree) Floor(key interface{}) (floor *X结构_AVLTreeNode, 成功 bool)

Floor 找到输入键的地板节点,如果没有找到地板节点,则返回nil。第二个返回参数表示是否找到了地板,如果找到为true,否则为false。

地板节点定义为大于或等于给定节点的最大节点。可能找不到地板节点,原因可能是树为空,或者树中的所有节点都大于给定节点。

键应遵循比较器的类型断言,否则方法会 panic。 md5:720f6000179912eb

func (*X结构_AVLTree) Get

func (tree *X结构_AVLTree) Get(key interface{}) (value interface{})

Get 通过`key`在树中搜索节点,并返回其值,如果`key`在树中未找到,则返回nil。 md5:2e2483db20a69167

func (*X结构_AVLTree) GetOrSet

func (tree *X结构_AVLTree) GetOrSet(key interface{}, value interface{}) interface{}

GetOrSet 通过键返回值, 如果该键不存在,则使用给定的`value`设置值,然后返回这个值。 md5:d8f89b6dec47292b

func (*X结构_AVLTree) GetOrSetFunc

func (tree *X结构_AVLTree) GetOrSetFunc(key interface{}, f func() interface{}) interface{}

GetOrSetFunc 通过键获取值, 如果键不存在,则使用回调函数`f`的返回值设置值, 并返回这个设置的值。 md5:f584dd7547dfbcc0

func (*X结构_AVLTree) GetOrSetFuncLock

func (tree *X结构_AVLTree) GetOrSetFuncLock(key interface{}, f func() interface{}) interface{}

GetOrSetFuncLock 通过键获取值, 如果不存在,它将使用回调函数 `f` 的返回值设置该值,然后返回这个值。

GetOrSetFuncLock 与 GetOrSetFunc 函数的不同之处在于,它在执行函数 `f` 时会先锁定哈希映射的 mutex。 md5:d32fdee586d84dde

func (*X结构_AVLTree) GetVar

func (tree *X结构_AVLTree) GetVar(key interface{}) *gvar.X结构_泛型类

GetVar 函数通过给定的 `key` 返回一个 gvar.Var,其值为对应的变量。 返回的 gvar.Var 不是并发安全的。 md5:a04747902e4bf242

func (*X结构_AVLTree) GetVarOrSet

func (tree *X结构_AVLTree) GetVarOrSet(key interface{}, value interface{}) *gvar.X结构_泛型类

GetVarOrSet 返回一个从 GetVarOrSet 获取的结果的 gvar.Var。返回的 gvar.Var 不是线程安全的。 md5:089beb08264e18cf

func (*X结构_AVLTree) GetVarOrSetFunc

func (tree *X结构_AVLTree) GetVarOrSetFunc(key interface{}, f func() interface{}) *gvar.X结构_泛型类

GetVarOrSetFunc 返回一个 gvar.Var,其结果来自 GetOrSetFunc。 返回的 gvar.Var 不是线程安全的。 md5:8c97b145faade5ae

func (*X结构_AVLTree) GetVarOrSetFuncLock

func (tree *X结构_AVLTree) GetVarOrSetFuncLock(key interface{}, f func() interface{}) *gvar.X结构_泛型类

GetVarOrSetFuncLock 返回一个gvar.Var,其结果来自GetOrSetFuncLock。 返回的gvar.Var是非并发安全的。 md5:90c22300c2187ce4

func (*X结构_AVLTree) IsEmpty

func (tree *X结构_AVLTree) IsEmpty() bool

IsEmpty 如果树中不包含任何节点,则返回true。 md5:8f7ae813360d880b

func (*X结构_AVLTree) IteratorAsc

func (tree *X结构_AVLTree) IteratorAsc(f func(key, value interface{}) bool)

IteratorAsc 使用给定的回调函数 `f` 以升序遍历树(只读)。如果 `f` 返回 true,则继续遍历;如果返回 false,则停止遍历。 md5:c13b99ae40add3b0

func (*X结构_AVLTree) IteratorAscFrom

func (tree *X结构_AVLTree) IteratorAscFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorAscFrom 从给定的回调函数 `f` 以升序遍历树。 参数 `key` 指定了遍历的起始条目。`match` 参数指定如果 `key` 完全匹配时是否开始遍历,否则使用索引搜索进行遍历。 如果 `f` 返回 true,则继续遍历;如果返回 false,则停止遍历。 md5:c04855bbd3989808

func (*X结构_AVLTree) IteratorDesc

func (tree *X结构_AVLTree) IteratorDesc(f func(key, value interface{}) bool)

IteratorDesc 以降序方式遍历树,使用给定的回调函数 `f`。如果 `f` 返回 true,则继续遍历;否则停止。 md5:f6740ea55dafe4bb

func (*X结构_AVLTree) IteratorDescFrom

func (tree *X结构_AVLTree) IteratorDescFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorDescFrom 以降序方式遍历树,使用给定的回调函数 `f`。参数 `key` 指定开始遍历的条目。`match` 表示是否在 `key` 完全匹配时开始遍历,否则使用索引搜索遍历。如果 `f` 返回 true,则继续遍历;否则停止。 md5:e6bb2f7d12ab34f6

func (*X结构_AVLTree) IteratorFrom

func (tree *X结构_AVLTree) IteratorFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorFrom是IteratorAscFrom的别名。 md5:6d3d506bcb5fe942

func (*X结构_AVLTree) Keys

func (tree *X结构_AVLTree) Keys() []interface{}

Keys 返回所有键,按升序排列。 md5:c2a692ea3491e160

func (*X结构_AVLTree) Left

func (tree *X结构_AVLTree) Left() *X结构_AVLTreeNode

Left 返回 AVL 树中的最小元素 如果树为空,则返回 nil。 md5:d6b4c070feb60521

func (*X结构_AVLTree) Map

func (tree *X结构_AVLTree) Map() map[interface{}]interface{}

Map 返回所有键值对项作为一个映射。 md5:c12ca822a6c71dc1

func (X结构_AVLTree) MarshalJSON

func (tree X结构_AVLTree) MarshalJSON() (jsonBytes []byte, err error)

MarshalJSON 实现了接口 MarshalJSON 以供 json.Marshal 使用。 md5:43c3b36e60a18f9a

func (*X结构_AVLTree) Print

func (tree *X结构_AVLTree) Print()

Print 将树打印到标准输出。 md5:24fd6288549a501b

func (*X结构_AVLTree) Remove

func (tree *X结构_AVLTree) Remove(key interface{}) (value interface{})

Remove 通过键从树中移除节点。 键应符合比较器的类型断言,否则方法将 panic。 md5:23794cd4708d8756

func (*X结构_AVLTree) Removes

func (tree *X结构_AVLTree) Removes(keys []interface{})

通过`keys`移除树中的批量删除值。 md5:4620c81ac88b2936

func (*X结构_AVLTree) Replace

func (tree *X结构_AVLTree) Replace(data map[interface{}]interface{})

使用给定的`data`替换树中的数据。 md5:ff636c579597f294

func (*X结构_AVLTree) Right

func (tree *X结构_AVLTree) Right() *X结构_AVLTreeNode

Right 返回AVL树中的最大元素,如果树为空则返回nil。 md5:7f0d34ae61ed561f

func (*X结构_AVLTree) Search

func (tree *X结构_AVLTree) Search(key interface{}) (value interface{}, 成功 bool)

Search 函数使用给定的 `key` 在树中进行查找。 第二个返回参数 `found` 为 true 表示找到了键,否则为 false。 md5:d151c3783cadda2c

func (*X结构_AVLTree) SetIfNotExist

func (tree *X结构_AVLTree) SetIfNotExist(key interface{}, value interface{}) bool

SetIfNotExist 如果键`key`不存在,则将`value`设置到映射中,并返回true。如果键`key`已存在,且`value`将被忽略,函数返回false。 md5:f80895920828f03e

func (*X结构_AVLTree) SetIfNotExistFunc

func (tree *X结构_AVLTree) SetIfNotExistFunc(key interface{}, f func() interface{}) bool

SetIfNotExistFunc 使用回调函数`f`的返回值设置值,并返回true。 如果`key`已存在,则返回false,且`value`会被忽略。 md5:326c0b7c63d813e7

func (*X结构_AVLTree) SetIfNotExistFuncLock

func (tree *X结构_AVLTree) SetIfNotExistFuncLock(key interface{}, f func() interface{}) bool

SetIfNotExistFuncLock 使用回调函数 `f` 的返回值设置值,然后返回 true。 如果 `key` 已存在,则返回 false,`value` 将被忽略。

SetIfNotExistFuncLock 与 SetIfNotExistFunc 函数的区别在于, 它在哈希映射的 mutex.Lock 保护下执行函数 `f`。 md5:a6ee84b157328f61

func (*X结构_AVLTree) Sets

func (tree *X结构_AVLTree) Sets(data map[interface{}]interface{})

设置批处理将键值对添加到树中。 md5:70c6ec85c8b7476c

func (*X结构_AVLTree) Size

func (tree *X结构_AVLTree) Size() int

Size 返回树中的节点数量。 md5:d437d5852f80de5c

func (*X结构_AVLTree) String

func (tree *X结构_AVLTree) String() string

String 返回容器的字符串表示形式. md5:7daf925d59987319

func (*X结构_AVLTree) Values

func (tree *X结构_AVLTree) Values() []interface{}

Values返回根据键值升序排列的所有值。 md5:6268d60d7aa20c91

func (*X结构_AVLTree) X取MapStrAny

func (tree *X结构_AVLTree) X取MapStrAny() map[string]interface{}

X取MapStrAny 将所有键值对作为 map[string]interface{} 返回。 md5:412456aafc43f7a8

func (*X结构_AVLTree) X浅拷贝对象

func (tree *X结构_AVLTree) X浅拷贝对象() *X结构_AVLTree

X浅拷贝对象 返回一个新的树,其中包含当前树的副本。 md5:256477216ae712b7

func (*X结构_AVLTree) X设置值

func (tree *X结构_AVLTree) X设置值(key interface{}, value interface{})

X设置值 将节点插入到树中。 md5:8af837873ed60d6a

func (*X结构_AVLTree) X遍历

func (tree *X结构_AVLTree) X遍历(f func(key, value interface{}) bool)

X遍历 是 IteratorAsc 的别名。 md5:1bfdea306db62845

type X结构_AVLTreeNode

type X结构_AVLTreeNode struct {
	Key   interface{}
	Value interface{}
	// contains filtered or unexported fields
}

X结构_AVLTreeNode 是树中的一个元素。 md5:ae1bf04ae171ca4e

func (*X结构_AVLTreeNode) Next

Next 返回AVL树中序遍历的下一个元素。 md5:bf33a084df1455d4

func (*X结构_AVLTreeNode) Prev

Prev 返回AVL树中序遍历的上一个元素。 md5:d859f5a91f8afa30

type X结构_BTree

type X结构_BTree struct {
	// contains filtered or unexported fields
}

X结构_BTree 存储 B 树的元素。 md5:191d2e09c9c918ab

func NewBTree

func NewBTree(m int, comparator func(v1, v2 interface{}) int, safe ...bool) *X结构_BTree

NewBTree 创建一个具有 `m`(最大子节点数)和自定义键比较器的 B 树。参数 `safe` 用于指定是否在并发安全模式下使用树,其默认值为 false。 注意,`m` 必须大于或等于 3,否则将引发 panic。 md5:63e15eb274ca4e1d

Example
package main

import (
	"fmt"

	gtree "gitee.com/go_888/goframe/container/gtree"
	gconv "gitee.com/go_888/goframe/util/gconv"

	gutil "gitee.com/go_888/goframe/util/gutil"
)

func main() {
	bTree := gtree.NewBTree(3, gutil.X比较文本)
	for i := 0; i < 6; i++ {
		bTree.X设置值("key"+gconv.String(i), "val"+gconv.String(i))
	}
	fmt.Println(bTree.Map())

}
Output:

map[key0:val0 key1:val1 key2:val2 key3:val3 key4:val4 key5:val5]

func NewBTreeFrom

func NewBTreeFrom(m int, comparator func(v1, v2 interface{}) int, data map[interface{}]interface{}, safe ...bool) *X结构_BTree

NewBTreeFrom 根据给定的参数实例化一个 B-树,包括孩子节点的最大数量 `m`、自定义键比较器和数据映射。 参数 `safe` 用于指定是否需要并发安全,默认情况下为 false。 md5:7a8fbca9b49feb70

Example
package main

import (
	"fmt"

	gtree "gitee.com/go_888/goframe/container/gtree"
	gconv "gitee.com/go_888/goframe/util/gconv"

	gutil "gitee.com/go_888/goframe/util/gutil"
)

func main() {
	bTree := gtree.NewBTree(3, gutil.X比较文本)
	for i := 0; i < 6; i++ {
		bTree.X设置值("key"+gconv.String(i), "val"+gconv.String(i))
	}

	otherBTree := gtree.NewBTreeFrom(3, gutil.X比较文本, bTree.Map())
	fmt.Println(otherBTree.Map())

}
Output:

map[key0:val0 key1:val1 key2:val2 key3:val3 key4:val4 key5:val5]

func (*X结构_BTree) Clear

func (tree *X结构_BTree) Clear()

Clear 从树中移除所有节点。 md5:a7db742922264980

func (*X结构_BTree) Contains

func (tree *X结构_BTree) Contains(key interface{}) bool

Contains 检查键 `key` 是否存在于树中。 md5:77fd85af8e586867

func (*X结构_BTree) Get

func (tree *X结构_BTree) Get(key interface{}) (value interface{})

Get 通过`key`在树中搜索节点,并返回其值,如果`key`在树中未找到,则返回nil。 md5:2e2483db20a69167

func (*X结构_BTree) GetOrSet

func (tree *X结构_BTree) GetOrSet(key interface{}, value interface{}) interface{}

GetOrSet 通过键返回值, 如果该键不存在,则使用给定的`value`设置值,然后返回这个值。 md5:d8f89b6dec47292b

func (*X结构_BTree) GetOrSetFunc

func (tree *X结构_BTree) GetOrSetFunc(key interface{}, f func() interface{}) interface{}

GetOrSetFunc 通过键获取值, 如果键不存在,则使用回调函数`f`的返回值设置值, 并返回这个设置的值。 md5:f584dd7547dfbcc0

func (*X结构_BTree) GetOrSetFuncLock

func (tree *X结构_BTree) GetOrSetFuncLock(key interface{}, f func() interface{}) interface{}

GetOrSetFuncLock 通过键获取值, 如果不存在,它将使用回调函数 `f` 的返回值设置该值,然后返回这个值。

GetOrSetFuncLock 与 GetOrSetFunc 函数的不同之处在于,它在执行函数 `f` 时会先锁定哈希映射的 mutex。 md5:d32fdee586d84dde

func (*X结构_BTree) GetVar

func (tree *X结构_BTree) GetVar(key interface{}) *gvar.X结构_泛型类

GetVar 函数通过给定的 `key` 返回一个 gvar.Var,其值为对应的变量。 返回的 gvar.Var 不是并发安全的。 md5:a04747902e4bf242

func (*X结构_BTree) GetVarOrSet

func (tree *X结构_BTree) GetVarOrSet(key interface{}, value interface{}) *gvar.X结构_泛型类

GetVarOrSet 返回一个从 GetVarOrSet 获取的结果的 gvar.Var。返回的 gvar.Var 不是线程安全的。 md5:089beb08264e18cf

func (*X结构_BTree) GetVarOrSetFunc

func (tree *X结构_BTree) GetVarOrSetFunc(key interface{}, f func() interface{}) *gvar.X结构_泛型类

GetVarOrSetFunc 返回一个 gvar.Var,其结果来自 GetOrSetFunc。 返回的 gvar.Var 不是线程安全的。 md5:8c97b145faade5ae

func (*X结构_BTree) GetVarOrSetFuncLock

func (tree *X结构_BTree) GetVarOrSetFuncLock(key interface{}, f func() interface{}) *gvar.X结构_泛型类

GetVarOrSetFuncLock 返回一个gvar.Var,其结果来自GetOrSetFuncLock。 返回的gvar.Var是非并发安全的。 md5:90c22300c2187ce4

func (*X结构_BTree) Height

func (tree *X结构_BTree) Height() int

Height 返回树的高度。 md5:c3af563cbe50966a

func (*X结构_BTree) IsEmpty

func (tree *X结构_BTree) IsEmpty() bool

IsEmpty 返回true当树中不包含任何节点时. md5:d43f280c082bb0fd

func (*X结构_BTree) IteratorAsc

func (tree *X结构_BTree) IteratorAsc(f func(key, value interface{}) bool)

IteratorAsc 使用给定的回调函数 `f` 以升序遍历树(只读)。如果 `f` 返回 true,则继续遍历;如果返回 false,则停止遍历。 md5:c13b99ae40add3b0

func (*X结构_BTree) IteratorAscFrom

func (tree *X结构_BTree) IteratorAscFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorAscFrom 从给定的回调函数 `f` 以升序遍历树。 参数 `key` 指定了遍历的起始条目。`match` 参数指定如果 `key` 完全匹配时是否开始遍历,否则使用索引搜索进行遍历。 如果 `f` 返回 true,则继续遍历;如果返回 false,则停止遍历。 md5:c04855bbd3989808

func (*X结构_BTree) IteratorDesc

func (tree *X结构_BTree) IteratorDesc(f func(key, value interface{}) bool)

IteratorDesc 以降序方式遍历树,使用给定的回调函数 `f`。如果 `f` 返回 true,则继续遍历;否则停止。 md5:f6740ea55dafe4bb

func (*X结构_BTree) IteratorDescFrom

func (tree *X结构_BTree) IteratorDescFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorDescFrom 以降序方式遍历树,使用给定的回调函数 `f`。参数 `key` 指定开始遍历的条目。`match` 表示是否在 `key` 完全匹配时开始遍历,否则使用索引搜索遍历。如果 `f` 返回 true,则继续遍历;否则停止。 md5:e6bb2f7d12ab34f6

func (*X结构_BTree) IteratorFrom

func (tree *X结构_BTree) IteratorFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorFrom是IteratorAscFrom的别名。 md5:6d3d506bcb5fe942

func (*X结构_BTree) Keys

func (tree *X结构_BTree) Keys() []interface{}

Keys 返回所有键,按升序排列。 md5:c2a692ea3491e160

func (*X结构_BTree) Left

func (tree *X结构_BTree) Left() *X结构_BTreeEntry

Left 返回最左边(最小)的条目,如果树为空则返回 nil。 md5:57cf05edc8d10b88

func (*X结构_BTree) Map

func (tree *X结构_BTree) Map() map[interface{}]interface{}

Map 返回所有键值对项作为一个映射。 md5:c12ca822a6c71dc1

func (X结构_BTree) MarshalJSON

func (tree X结构_BTree) MarshalJSON() (jsonBytes []byte, err error)

MarshalJSON 实现了接口 MarshalJSON 以供 json.Marshal 使用。 md5:43c3b36e60a18f9a

func (*X结构_BTree) Print

func (tree *X结构_BTree) Print()

Print 将树打印到标准输出。 md5:24fd6288549a501b

func (*X结构_BTree) Remove

func (tree *X结构_BTree) Remove(key interface{}) (value interface{})

Remove 通过 `key` 从树中移除节点。 md5:42fcfa1d28b3945f

func (*X结构_BTree) Removes

func (tree *X结构_BTree) Removes(keys []interface{})

通过`keys`移除树中的批量删除值。 md5:4620c81ac88b2936

func (*X结构_BTree) Replace

func (tree *X结构_BTree) Replace(data map[interface{}]interface{})

使用给定的`data`替换树中的数据。 md5:ff636c579597f294

func (*X结构_BTree) Right

func (tree *X结构_BTree) Right() *X结构_BTreeEntry

Right 返回最右边(最大)的条目,如果树为空则返回 nil。 md5:cd331b29b9cc98f8

func (*X结构_BTree) Search

func (tree *X结构_BTree) Search(key interface{}) (value interface{}, 成功 bool)

Search 函数使用给定的 `key` 在树中进行查找。 第二个返回参数 `found` 为 true 表示找到了键,否则为 false。 md5:d151c3783cadda2c

func (*X结构_BTree) SetIfNotExist

func (tree *X结构_BTree) SetIfNotExist(key interface{}, value interface{}) bool

SetIfNotExist 如果键`key`不存在,则将`value`设置到映射中,并返回true。如果键`key`已存在,且`value`将被忽略,函数返回false。 md5:f80895920828f03e

func (*X结构_BTree) SetIfNotExistFunc

func (tree *X结构_BTree) SetIfNotExistFunc(key interface{}, f func() interface{}) bool

SetIfNotExistFunc 使用回调函数`f`的返回值设置值,并返回true。 如果`key`已存在,则返回false,且`value`会被忽略。 md5:326c0b7c63d813e7

func (*X结构_BTree) SetIfNotExistFuncLock

func (tree *X结构_BTree) SetIfNotExistFuncLock(key interface{}, f func() interface{}) bool

SetIfNotExistFuncLock 使用回调函数 `f` 的返回值设置值,然后返回 true。 如果 `key` 已存在,则返回 false,`value` 将被忽略。

SetIfNotExistFuncLock 与 SetIfNotExistFunc 函数的区别在于, 它在哈希映射的 mutex.Lock 保护下执行函数 `f`。 md5:a6ee84b157328f61

func (*X结构_BTree) Sets

func (tree *X结构_BTree) Sets(data map[interface{}]interface{})

设置批处理将键值对添加到树中。 md5:70c6ec85c8b7476c

func (*X结构_BTree) Size

func (tree *X结构_BTree) Size() int

Size 返回树中的节点数量。 md5:d437d5852f80de5c

func (*X结构_BTree) String

func (tree *X结构_BTree) String() string

String 返回一个表示容器的字符串(用于调试目的). md5:2d28c3cbf692ce78

func (*X结构_BTree) Values

func (tree *X结构_BTree) Values() []interface{}

Values返回根据键值升序排列的所有值。 md5:6268d60d7aa20c91

func (*X结构_BTree) X取MapStrAny

func (tree *X结构_BTree) X取MapStrAny() map[string]interface{}

X取MapStrAny 将所有键值对作为 map[string]interface{} 返回。 md5:412456aafc43f7a8

func (*X结构_BTree) X浅拷贝对象

func (tree *X结构_BTree) X浅拷贝对象() *X结构_BTree

X浅拷贝对象 返回一个新的树,其中包含当前树的副本。 md5:256477216ae712b7

func (*X结构_BTree) X设置值

func (tree *X结构_BTree) X设置值(key interface{}, value interface{})

X设置值 将键值对插入到树中。 md5:af4d398e6bf21959

func (*X结构_BTree) X遍历

func (tree *X结构_BTree) X遍历(f func(key, value interface{}) bool)

X遍历 是 IteratorAsc 的别名。 md5:1bfdea306db62845

type X结构_BTreeEntry

type X结构_BTreeEntry struct {
	Key   interface{}
	Value interface{}
}

X结构_BTreeEntry表示节点中包含的键值对。 md5:215d17b4d8c2f829

type X结构_BTreeNode

type X结构_BTreeNode struct {
	Parent   *X结构_BTreeNode
	Entries  []*X结构_BTreeEntry // Contained keys in node
	Children []*X结构_BTreeNode  // Children nodes
}

X结构_BTreeNode 是树中的一个单个元素。 md5:f6e73ea6e5510845

type X结构_RedBlackTree

type X结构_RedBlackTree struct {
	// contains filtered or unexported fields
}

X结构_RedBlackTree 保存红黑树中的元素。 md5:5b20879b021304e2

func NewRedBlackTree

func NewRedBlackTree(comparator func(v1, v2 interface{}) int, safe ...bool) *X结构_RedBlackTree

NewRedBlackTree 使用自定义键比较器创建一个红黑树。 参数 `safe` 用于指定是否在并发安全模式下使用树,默认为 false。 md5:ee97b0369d4155af

Example
package main

import (
	"fmt"

	gtree "gitee.com/go_888/goframe/container/gtree"
	gconv "gitee.com/go_888/goframe/util/gconv"

	gutil "gitee.com/go_888/goframe/util/gutil"
)

func main() {
	rbTree := gtree.NewRedBlackTree(gutil.X比较文本)
	for i := 0; i < 6; i++ {
		rbTree.X设置值("key"+gconv.String(i), "val"+gconv.String(i))
	}

	fmt.Println(rbTree)

}
Output:

│           ┌── key5
│       ┌── key4
│   ┌── key3
│   │   └── key2
└── key1
    └── key0

func NewRedBlackTreeFrom

func NewRedBlackTreeFrom(comparator func(v1, v2 interface{}) int, data map[interface{}]interface{}, safe ...bool) *X结构_RedBlackTree

NewRedBlackTreeFrom 根据自定义的键比较器和`data`映射实例化一个红黑树。 参数 `safe` 用于指定是否需要在并发安全的环境下使用该树, 默认情况下为false。 md5:d8480b30bce45a04

Example
package main

import (
	"fmt"

	gtree "gitee.com/go_888/goframe/container/gtree"
	gconv "gitee.com/go_888/goframe/util/gconv"

	gutil "gitee.com/go_888/goframe/util/gutil"
)

func main() {
	rbTree := gtree.NewRedBlackTree(gutil.X比较文本)
	for i := 0; i < 6; i++ {
		rbTree.X设置值("key"+gconv.String(i), "val"+gconv.String(i))
	}

	otherRBTree := gtree.NewRedBlackTreeFrom(gutil.X比较文本, rbTree.Map())
	fmt.Println(otherRBTree)

	// May Output:
	// │           ┌── key5
	// │       ┌── key4
	// │   ┌── key3
	// │   │   └── key2
	// └── key1
	//     └── key0
}
Output:

func (*X结构_RedBlackTree) Ceiling

func (tree *X结构_RedBlackTree) Ceiling(key interface{}) (ceiling *X结构_RedBlackTreeNode, 成功 bool)

Ceiling找到输入键的天花板节点,如果没有找到天花板节点则返回nil。第二个返回参数表示是否找到了天花板,否则为false。

定义天花板节点为其键大于或等于给定`key`的最小节点。可能找不到天花板节点,原因可能是树为空,或者树中的所有节点都小于给定节点。 md5:3d6d229626a6b5b2

func (*X结构_RedBlackTree) Clear

func (tree *X结构_RedBlackTree) Clear()

Clear 从树中移除所有节点。 md5:a7db742922264980

func (*X结构_RedBlackTree) Contains

func (tree *X结构_RedBlackTree) Contains(key interface{}) bool

Contains 检查键 `key` 是否存在于树中。 md5:77fd85af8e586867

func (*X结构_RedBlackTree) Flip

func (tree *X结构_RedBlackTree) Flip(comparator ...func(v1, v2 interface{}) int)

Flip 将树中的键值对交换为值键。 请注意,你应该确保值的类型与键相同,否则比较器会panic。

如果值的类型与键不同,你需要传递新的 `comparator`。 md5:e71ceac22aee55f1

func (*X结构_RedBlackTree) Floor

func (tree *X结构_RedBlackTree) Floor(key interface{}) (floor *X结构_RedBlackTreeNode, 成功 bool)

Floor 找到输入键的地板节点,如果没有找到地板节点,则返回nil。第二个返回参数表示是否找到了地板(true表示找到,false表示未找到)。

地板节点定义为其键小于或等于给定`key`的最大节点。可能无法找到地板节点,因为树为空,或者树中的所有节点都大于给定节点。 md5:e76dc868738ea5a0

func (*X结构_RedBlackTree) Get

func (tree *X结构_RedBlackTree) Get(key interface{}) (value interface{})

Get 通过`key`在树中搜索节点,并返回其值,如果`key`在树中未找到,则返回nil。 md5:2e2483db20a69167

func (*X结构_RedBlackTree) GetOrSet

func (tree *X结构_RedBlackTree) GetOrSet(key interface{}, value interface{}) interface{}

GetOrSet 通过键返回值, 如果该键不存在,则使用给定的`value`设置值,然后返回这个值。 md5:d8f89b6dec47292b

func (*X结构_RedBlackTree) GetOrSetFunc

func (tree *X结构_RedBlackTree) GetOrSetFunc(key interface{}, f func() interface{}) interface{}

GetOrSetFunc 通过键获取值, 如果键不存在,则使用回调函数`f`的返回值设置值, 并返回这个设置的值。 md5:f584dd7547dfbcc0

func (*X结构_RedBlackTree) GetOrSetFuncLock

func (tree *X结构_RedBlackTree) GetOrSetFuncLock(key interface{}, f func() interface{}) interface{}

GetOrSetFuncLock 通过键获取值, 如果不存在,它将使用回调函数 `f` 的返回值设置该值,然后返回这个值。

GetOrSetFuncLock 与 GetOrSetFunc 函数的不同之处在于,它在执行函数 `f` 时会先锁定哈希映射的 mutex。 md5:d32fdee586d84dde

func (*X结构_RedBlackTree) GetVar

func (tree *X结构_RedBlackTree) GetVar(key interface{}) *gvar.X结构_泛型类

GetVar 函数通过给定的 `key` 返回一个 gvar.Var,其值为对应的变量。 返回的 gvar.Var 不是并发安全的。 md5:a04747902e4bf242

func (*X结构_RedBlackTree) GetVarOrSet

func (tree *X结构_RedBlackTree) GetVarOrSet(key interface{}, value interface{}) *gvar.X结构_泛型类

GetVarOrSet 返回一个从 GetVarOrSet 获取的结果的 gvar.Var。返回的 gvar.Var 不是线程安全的。 md5:089beb08264e18cf

func (*X结构_RedBlackTree) GetVarOrSetFunc

func (tree *X结构_RedBlackTree) GetVarOrSetFunc(key interface{}, f func() interface{}) *gvar.X结构_泛型类

GetVarOrSetFunc 返回一个 gvar.Var,其结果来自 GetOrSetFunc。 返回的 gvar.Var 不是线程安全的。 md5:8c97b145faade5ae

func (*X结构_RedBlackTree) GetVarOrSetFuncLock

func (tree *X结构_RedBlackTree) GetVarOrSetFuncLock(key interface{}, f func() interface{}) *gvar.X结构_泛型类

GetVarOrSetFuncLock 返回一个gvar.Var,其结果来自GetOrSetFuncLock。 返回的gvar.Var是非并发安全的。 md5:90c22300c2187ce4

func (*X结构_RedBlackTree) IsEmpty

func (tree *X结构_RedBlackTree) IsEmpty() bool

IsEmpty 如果树中不包含任何节点,则返回true。 md5:8f7ae813360d880b

func (*X结构_RedBlackTree) IteratorAsc

func (tree *X结构_RedBlackTree) IteratorAsc(f func(key, value interface{}) bool)

IteratorAsc 使用给定的回调函数 `f` 以升序遍历树(只读)。如果 `f` 返回 true,则继续遍历;如果返回 false,则停止遍历。 md5:c13b99ae40add3b0

func (*X结构_RedBlackTree) IteratorAscFrom

func (tree *X结构_RedBlackTree) IteratorAscFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorAscFrom 从给定的回调函数 `f` 以升序遍历树。 参数 `key` 指定了遍历的起始条目。`match` 参数指定如果 `key` 完全匹配时是否开始遍历,否则使用索引搜索进行遍历。 如果 `f` 返回 true,则继续遍历;如果返回 false,则停止遍历。 md5:c04855bbd3989808

func (*X结构_RedBlackTree) IteratorDesc

func (tree *X结构_RedBlackTree) IteratorDesc(f func(key, value interface{}) bool)

IteratorDesc 以降序方式遍历树,使用给定的回调函数 `f`。如果 `f` 返回 true,则继续遍历;否则停止。 md5:f6740ea55dafe4bb

func (*X结构_RedBlackTree) IteratorDescFrom

func (tree *X结构_RedBlackTree) IteratorDescFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorDescFrom 以降序方式遍历树,使用给定的回调函数 `f`。参数 `key` 指定开始遍历的条目。`match` 表示是否在 `key` 完全匹配时开始遍历,否则使用索引搜索遍历。如果 `f` 返回 true,则继续遍历;否则停止。 md5:e6bb2f7d12ab34f6

func (*X结构_RedBlackTree) IteratorFrom

func (tree *X结构_RedBlackTree) IteratorFrom(key interface{}, match bool, f func(key, value interface{}) bool)

IteratorFrom是IteratorAscFrom的别名。 md5:6d3d506bcb5fe942

func (*X结构_RedBlackTree) Keys

func (tree *X结构_RedBlackTree) Keys() []interface{}

Keys 返回所有键,按升序排列。 md5:c2a692ea3491e160

func (*X结构_RedBlackTree) Left

Left 返回最左边(最小)的节点,如果树为空则返回nil。 md5:73ad6a74ff7ce0d2

func (*X结构_RedBlackTree) Map

func (tree *X结构_RedBlackTree) Map() map[interface{}]interface{}

Map 返回所有键值对项作为一个映射。 md5:c12ca822a6c71dc1

func (X结构_RedBlackTree) MarshalJSON

func (tree X结构_RedBlackTree) MarshalJSON() (jsonBytes []byte, err error)

MarshalJSON 实现了接口 MarshalJSON 以供 json.Marshal 使用。 md5:43c3b36e60a18f9a

func (*X结构_RedBlackTree) Print

func (tree *X结构_RedBlackTree) Print()

Print 将树打印到标准输出。 md5:24fd6288549a501b

func (*X结构_RedBlackTree) Remove

func (tree *X结构_RedBlackTree) Remove(key interface{}) (value interface{})

Remove 通过 `key` 从树中移除节点。 md5:42fcfa1d28b3945f

func (*X结构_RedBlackTree) Removes

func (tree *X结构_RedBlackTree) Removes(keys []interface{})

通过`keys`移除树中的批量删除值。 md5:4620c81ac88b2936

func (*X结构_RedBlackTree) Replace

func (tree *X结构_RedBlackTree) Replace(data map[interface{}]interface{})

使用给定的`data`替换树中的数据。 md5:ff636c579597f294

func (*X结构_RedBlackTree) Right

Right 返回最右边(最大)的节点,如果树为空则返回nil。 md5:92003588329d774d

func (*X结构_RedBlackTree) Search

func (tree *X结构_RedBlackTree) Search(key interface{}) (value interface{}, 成功 bool)

Search 函数使用给定的 `key` 在树中进行查找。 第二个返回参数 `found` 为 true 表示找到了键,否则为 false。 md5:d151c3783cadda2c

func (*X结构_RedBlackTree) SetComparator

func (tree *X结构_RedBlackTree) SetComparator(comparator func(a, b interface{}) int)

SetComparator 设置或更改排序的比较器。 md5:5108f29cfa1a4664

func (*X结构_RedBlackTree) SetIfNotExist

func (tree *X结构_RedBlackTree) SetIfNotExist(key interface{}, value interface{}) bool

SetIfNotExist 如果键`key`不存在,则将`value`设置到映射中,并返回true。如果键`key`已存在,且`value`将被忽略,函数返回false。 md5:f80895920828f03e

func (*X结构_RedBlackTree) SetIfNotExistFunc

func (tree *X结构_RedBlackTree) SetIfNotExistFunc(key interface{}, f func() interface{}) bool

SetIfNotExistFunc 使用回调函数`f`的返回值设置值,并返回true。 如果`key`已存在,则返回false,且`value`会被忽略。 md5:326c0b7c63d813e7

func (*X结构_RedBlackTree) SetIfNotExistFuncLock

func (tree *X结构_RedBlackTree) SetIfNotExistFuncLock(key interface{}, f func() interface{}) bool

SetIfNotExistFuncLock 使用回调函数 `f` 的返回值设置值,然后返回 true。 如果 `key` 已存在,则返回 false,`value` 将被忽略。

SetIfNotExistFuncLock 与 SetIfNotExistFunc 函数的区别在于, 它在哈希映射的 mutex.Lock 保护下执行函数 `f`。 md5:a6ee84b157328f61

func (*X结构_RedBlackTree) Sets

func (tree *X结构_RedBlackTree) Sets(data map[interface{}]interface{})

设置批处理将键值对添加到树中。 md5:70c6ec85c8b7476c

func (*X结构_RedBlackTree) Size

func (tree *X结构_RedBlackTree) Size() int

Size 返回树中的节点数量。 md5:d437d5852f80de5c

func (*X结构_RedBlackTree) String

func (tree *X结构_RedBlackTree) String() string

String 返回容器的字符串表示形式。 md5:d27ed19a0d92f8aa

func (*X结构_RedBlackTree) UnmarshalJSON

func (tree *X结构_RedBlackTree) UnmarshalJSON(b []byte) error

UnmarshalJSON实现了json.Unmarshal接口的UnmarshalJSON方法。 md5:f6766b88cf3d63c2

func (*X结构_RedBlackTree) UnmarshalValue

func (tree *X结构_RedBlackTree) UnmarshalValue(值 interface{}) (错误 error)

UnmarshalValue 是一个接口实现,用于将任何类型的值设置到映射中。 md5:6f3087a6f7df5477

func (*X结构_RedBlackTree) Values

func (tree *X结构_RedBlackTree) Values() []interface{}

Values返回根据键值升序排列的所有值。 md5:6268d60d7aa20c91

func (*X结构_RedBlackTree) X取MapStrAny

func (tree *X结构_RedBlackTree) X取MapStrAny() map[string]interface{}

X取MapStrAny 将所有键值对作为 map[string]interface{} 返回。 md5:412456aafc43f7a8

func (*X结构_RedBlackTree) X浅拷贝对象

func (tree *X结构_RedBlackTree) X浅拷贝对象() *X结构_RedBlackTree

X浅拷贝对象 返回一个新的树,其中包含当前树的副本。 md5:256477216ae712b7

func (*X结构_RedBlackTree) X设置值

func (tree *X结构_RedBlackTree) X设置值(key interface{}, value interface{})

X设置值 将键值对插入到树中。 md5:af4d398e6bf21959

func (*X结构_RedBlackTree) X遍历

func (tree *X结构_RedBlackTree) X遍历(f func(key, value interface{}) bool)

X遍历 是 IteratorAsc 的别名。 md5:1bfdea306db62845

type X结构_RedBlackTreeNode

type X结构_RedBlackTreeNode struct {
	Key   interface{}
	Value interface{}
	// contains filtered or unexported fields
}

X结构_RedBlackTreeNode 是树中的一个元素。 md5:782ce0fe3b02c5f4

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL