treemap

package
v1.0.51 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2022 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package treemap 左倾红黑树 Map.

left-leaning red-black tree map.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/base/treemap"
)

func main() {
	tmap := treemap.New(-1, -1)

	for i := 0; i < 10; i++ {
		tmap.Set(i, i)
	}

	for i := 3; i < 8; i++ {
		tmap.Del(i)
	}

	tmap.Each(func(key, value int) bool {
		fmt.Println(value)

		return true
	})

}
Output:

0
1
2
8
9

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func PrefixNext added in v0.4.39

func PrefixNext(prefix string) string

PrefixNext 字符串前缀下一个.

Types

type Iterator added in v0.5.40

type Iterator[K constraints.Ordered, V any] func(key K, value V) bool

Iterator 迭代器,返回 false 终止迭代..

type String added in v0.4.39

type String[V any] struct {
	TreeMap[string, V]
}

String 键值 string.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/base/treemap"
)

func main() {
	tmap := treemap.NewString(-1)

	for i := 100; i < 200; i++ {
		tmap.Set(fmt.Sprintf("a%d", i), i)
	}

	for i := 0; i < 10; i++ {
		tmap.Set(fmt.Sprintf("b%d", i), i)
	}

	list := []int{}

	tmap.Prefix(func(key string, value int) bool {
		list = append(list, value)

		return true
	}, "b")

	fmt.Println(list)

}
Output:

[0 1 2 3 4 5 6 7 8 9]

func NewString added in v0.4.39

func NewString[V any](notFoundValue V) *String[V]

func (*String[V]) Prefix added in v0.4.39

func (p *String[V]) Prefix(iterator Iterator[string, V], prefix string)

Prefix 前缀.

func (*String[V]) PrefixDesc added in v0.4.39

func (p *String[V]) PrefixDesc(iterator Iterator[string, V], prefix string)

PrefixDesc 倒叙前缀.

type TreeMap

type TreeMap[K constraints.Ordered, V any] struct {
	// contains filtered or unexported fields
}

TreeMap 左倾红黑树Map. left-leaning red-black tree map.

func New

func New[K constraints.Ordered, V any](noFoundKey K, notFoundValue V) *TreeMap[K, V]

New 新建 TreeMap. notFound 找不到时返回的值.

func (*TreeMap[K, V]) Add

func (p *TreeMap[K, V]) Add(key K, value V) bool

Add 增加,如果存在则忽略,返回之前是否存在.

func (*TreeMap[K, V]) Clear

func (p *TreeMap[K, V]) Clear()

Clear 清空.

func (*TreeMap[K, V]) Del

func (p *TreeMap[K, V]) Del(key K) bool

Del 删除.

func (*TreeMap[K, V]) DelMax

func (p *TreeMap[K, V]) DelMax() bool

DelMin 删除最大键.

func (*TreeMap[K, V]) DelMin

func (p *TreeMap[K, V]) DelMin() bool

DelMin 删除最小键.

func (*TreeMap[K, V]) Each

func (p *TreeMap[K, V]) Each(iterator Iterator[K, V])

Each 遍历.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/base/treemap"
)

func main() {
	llrb := treemap.New(-1, -1)

	for i := 0; i < 5; i++ {
		llrb.Set(i, i)
	}

	llrb.Each(func(key, value int) bool {
		fmt.Println(key, value)

		return true
	})

}
Output:

0 0
1 1
2 2
3 3
4 4

func (*TreeMap[K, V]) EachDesc

func (p *TreeMap[K, V]) EachDesc(iterator Iterator[K, V])

EachDesc 倒叙遍历.

func (*TreeMap[K, V]) Get

func (p *TreeMap[K, V]) Get(key K) (V, bool)

Get 根据 key 获取 Value.

func (*TreeMap[K, V]) GreateOrEqual

func (p *TreeMap[K, V]) GreateOrEqual(iterator Iterator[K, V], greaterOrEqual K)

GreateOrEqual 大于等于.

func (*TreeMap[K, V]) GreateOrEqualDesc

func (p *TreeMap[K, V]) GreateOrEqualDesc(iterator Iterator[K, V], greaterOrEqual K)

GreateOrEqualDesc 倒叙大于等于.

func (*TreeMap[K, V]) Len

func (p *TreeMap[K, V]) Len() int

Len 长度.

func (*TreeMap[K, V]) LessThan

func (p *TreeMap[K, V]) LessThan(iterator Iterator[K, V], lessThan K)

LessThan 小于.

func (*TreeMap[K, V]) LessThanDesc

func (p *TreeMap[K, V]) LessThanDesc(iterator Iterator[K, V], lessThan K)

LessThanDesc 倒叙小于.

func (*TreeMap[K, V]) Max

func (p *TreeMap[K, V]) Max() (V, K)

Max 最大键.

func (*TreeMap[K, V]) Min

func (p *TreeMap[K, V]) Min() (V, K)

Min 最小键.

func (*TreeMap[K, V]) Range

func (p *TreeMap[K, V]) Range(iterator Iterator[K, V], greaterOrEqual, lessThan K)

Range 范围.

func (*TreeMap[K, V]) RangeDesc

func (p *TreeMap[K, V]) RangeDesc(iterator Iterator[K, V], greaterOrEqual, lessThan K)

RangeDesc 倒叙范围.

func (*TreeMap[K, V]) Set

func (p *TreeMap[K, V]) Set(key K, value V) bool

Set 覆盖,返回是之前否存在.

Jump to

Keyboard shortcuts

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