maps

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: 6 Imported by: 0

Documentation

Overview

Package maps 多协程并发安全的TreeMap.

支持多种迭代方式,范围、前缀.

依赖 base/treemap.

Example
package main

import (
	"fmt"
	"strconv"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.NewString(-1)

	for i := 0; i <= 100; i++ {
		syncMap.Set(strconv.Itoa(i), i)
	}

	list := []int{}

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

		return true
	}, "1")

	fmt.Println(list)

}
Output:

[1 10 100 11 12 13 14 15 16 17 18 19]

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Group

func Group[K constraints.Ordered](key K, num int) int

Group 生成分组号.

Types

type Iterator

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

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

type Maps

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

Maps 线程安全的map.

func New

func New[K constraints.Ordered, V any](notFoundKey K, notFoundValue V) *Maps[K, V]

New 新建map,默认分组32个.

func NewByGroup

func NewByGroup[K constraints.Ordered, V any](group int, notFoundKey K, notFoundValue V) *Maps[K, V]

NewByGroup 新建map,自定义分组数量.

func (*Maps[K, V]) Add

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

Add 增加,如果有则忽略.

func (*Maps[K, V]) Clear

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

Clear 清空.

func (*Maps[K, V]) Del

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

Del 删除.

func (*Maps[K, V]) DelMax

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

DelMax 删除最大键.

func (*Maps[K, V]) DelMin

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

DelMin 删除最小键.

func (*Maps[K, V]) Each

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

Each 遍历.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

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

	list := []int{}

	syncMap.Each(func(key, value int) bool {
		list = append(list, value)

		return true
	})

	fmt.Println(list)

}
Output:

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

func (*Maps[K, V]) EachDesc

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

EachDesc 倒叙遍历.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

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

	list := []int{}

	syncMap.EachDesc(func(key, value int) bool {
		list = append(list, value)

		return true
	})

	fmt.Println(list)

}
Output:

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

func (*Maps[K, V]) Get

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

Get 取值.

func (*Maps[K, V]) GreateOrEqual

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

GreateOrEqual 大于或等于.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

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

	list := []int{}

	syncMap.GreateOrEqual(func(key, value int) bool {
		list = append(list, value)

		return true
	}, 6)

	fmt.Println(list)

}
Output:

[6 7 8 9]

func (*Maps[K, V]) GreateOrEqualDesc

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

GreateOrEqualDesc 倒叙大于等于.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

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

	list := []int{}

	syncMap.GreateOrEqualDesc(func(key, value int) bool {
		list = append(list, value)

		return true
	}, 6)

	fmt.Println(list)

}
Output:

[9 8 7 6]

func (*Maps[K, V]) Len

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

Len map存储数量.

func (*Maps[K, V]) LessThan

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

LessThan 小于.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

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

	list := []int{}

	syncMap.LessThan(func(key, value int) bool {
		list = append(list, value)

		return true
	}, 3)

	fmt.Println(list)

}
Output:

[0 1 2]

func (*Maps[K, V]) LessThanDesc

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

LessThanDesc 倒叙小于.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

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

	list := []int{}

	syncMap.LessThanDesc(func(key, value int) bool {
		list = append(list, value)

		return true
	}, 3)

	fmt.Println(list)

}
Output:

[2 1 0]

func (*Maps[K, V]) Max

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

Max 最大键值.

func (*Maps[K, V]) Min

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

Min 最小键值.

func (*Maps[K, V]) Range

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

Range 范围.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

	for i := 0; i < 100; i++ {
		syncMap.Set(i, i)
	}

	list := []int{}

	syncMap.Range(func(key, value int) bool {
		list = append(list, value)

		return true
	}, 9, 14)

	fmt.Println(list)

}
Output:

[9 10 11 12 13]

func (*Maps[K, V]) RangeDesc

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

RangeDesc 倒叙范围.

Example
package main

import (
	"fmt"

	"github.com/xuender/oils/syncs/maps"
)

func main() {
	syncMap := maps.New(-1, -1)

	for i := 0; i < 100; i++ {
		syncMap.Set(i, i)
	}

	list := []int{}

	syncMap.RangeDesc(func(key, value int) bool {
		list = append(list, value)

		return true
	}, 9, 14)

	fmt.Println(list)

}
Output:

[13 12 11 10 9]

func (*Maps[K, V]) Set

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

Set 设值.

type String added in v0.4.39

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

String 键值 string.

func NewString added in v0.4.39

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

func NewStringByGroup added in v0.4.39

func NewStringByGroup[V any](group int, 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 倒叙前缀.

Jump to

Keyboard shortcuts

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