hash

package
v0.2.6 Latest Latest
Warning

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

Go to latest
Published: Oct 16, 2023 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllExist

func AllExist[K comparable, V any](m map[K]V, keys ...K) bool

AllExist 检查多个 key 是否存在

func Chunk added in v0.1.5

func Chunk[K comparable, V any](m map[K]V, size int) []map[K]V

Chunk 将哈希表按照指定大小分块

  • m: 待分块的哈希表
  • size: 每块的大小

func Clear added in v0.0.31

func Clear[K comparable, V any](m map[K]V)

Clear 清空 map

func Copy

func Copy[K comparable, V any](m map[K]V) map[K]V

Copy 复制一个map

func DropBy added in v0.1.5

func DropBy[K comparable, V any](m map[K]V, fn func(key K, value V) bool) map[K]V

DropBy 从哈希表中删除指定的元素

func DropByCopy added in v0.1.5

func DropByCopy[K comparable, V any](m map[K]V, fn func(key K, value V) bool) map[K]V

DropByCopy 与 DropBy 功能相同,但是该函数不会修改原哈希表

func Each added in v0.1.5

func Each[K comparable, V any](abort bool, m map[K]V, iterator func(i int, key K, item V) bool)

Each 根据传入的 abort 遍历 m,如果 iterator 返回值与 abort 相同,则停止遍历

func EachF added in v0.1.5

func EachF[K comparable, V any](m map[K]V, iterator func(i int, key K, item V) bool)

EachF 与 Each 的功能相同,但是 abort 被默认为 false

func EachResult added in v0.1.5

func EachResult[K comparable, V any, R any](abort bool, m map[K]V, iterator func(i int, key K, item V) (R, bool)) []R

EachResult 根据传入的 abort 遍历 m,得到遍历的结果,如果 iterator 返回值中的 bool 值与 abort 相同,则停止遍历,并返回当前已积累的结果

func EachResultF added in v0.1.5

func EachResultF[K comparable, V any, R any](m map[K]V, iterator func(i int, key K, item V) (R, bool)) []R

EachResultF 与 EachResult 的功能相同,但是 abort 被默认为 false

func EachResultT added in v0.1.5

func EachResultT[K comparable, V any, R any](m map[K]V, iterator func(i int, key K, item V) (R, bool)) []R

EachResultT 与 EachResult 的功能相同,但是 abort 被默认为 true

func EachT added in v0.1.5

func EachT[K comparable, V any](m map[K]V, iterator func(i int, key K, item V) bool)

EachT 与 Each 的功能相同,但是 abort 被默认为 true

func Exist

func Exist[K comparable, V any](m map[K]V, key K) bool

Exist 检查特定 key 是否存在

func Filter added in v0.1.5

func Filter[K comparable, V any](reserve bool, m map[K]V, expression func(key K, value V) bool) map[K]V

Filter 根据特定的表达式过滤哈希表成员

  • reserve: 是否保留符合条件的成员
  • m: 待过滤的哈希表
  • expression: 过滤表达式

这个函数的作用是遍历输入哈希表 m,然后根据 expression 函数的返回值来决定是否保留每个元素。具体来说

  • 如果 expression 返回 true 并且 reserve 也是 true,那么元素会被保留
  • 如果 expression 返回 false 并且 reserve 是 false,那么元素也会被保留

该没有创建新的内存空间或进行元素复制,所以整个操作相当高效。同时,由于 m 和 map 实际上共享底层的数组,因此这个函数会改变传入的 map。如果不希望改变原哈希表,需要在函数调用之前手动复制一份或者使用 FilterCopy 函数。

func FilterCopy added in v0.1.5

func FilterCopy[K comparable, V any](reserve bool, m map[K]V, expression func(key K, value V) bool) map[K]V

FilterCopy 与 Filter 的功能相同,但是不会改变原哈希表,而是返回一个新的哈希表

func FilterF added in v0.1.5

func FilterF[K comparable, V any](m map[K]V, expression func(key K, value V) bool) map[K]V

FilterF 与 Filter 的功能相同,但是 reserve 被默认为 false

func FilterFCopy added in v0.1.5

func FilterFCopy[K comparable, V any](m map[K]V, expression func(key K, value V) bool) map[K]V

FilterFCopy 与 FilterCopy 的功能相同,但是 reserve 被默认为 false

func FilterT added in v0.1.5

func FilterT[K comparable, V any](m map[K]V, expression func(key K, value V) bool) map[K]V

FilterT 与 Filter 的功能相同,但是 reserve 被默认为 true

func FilterTCopy added in v0.1.5

func FilterTCopy[K comparable, V any](m map[K]V, expression func(key K, value V) bool) map[K]V

FilterTCopy 与 FilterCopy 的功能相同,但是 reserve 被默认为 true

func KeyToSlice

func KeyToSlice[K comparable, V any](m map[K]V) []K

KeyToSlice 将 map 的 key 转换为切片

func RandomDrop added in v0.1.5

func RandomDrop[K comparable, V any](n int, hash map[K]V) map[K]V

RandomDrop 随机删除哈希表中的指定数量的元素

  • 该函数会修改原哈希表,如果不想修改原哈希表,请使用 RandomDropCopy

func RandomDropCopy added in v0.1.5

func RandomDropCopy[K comparable, V any](n int, m map[K]V) map[K]V

RandomDropCopy 随机删除哈希表中的指定数量的元素

  • 该函数不会修改原哈希表,如果想修改原哈希表,请使用 RandomDrop

func RandomGet added in v0.0.9

func RandomGet[K comparable, V any](m map[K]V) (v V)

RandomGet 随机获取一个元素

func RandomGetKey added in v0.0.9

func RandomGetKey[K comparable, V any](m map[K]V) (k K)

RandomGetKey 随机获取一个 key

func RandomGetKeyN added in v0.0.9

func RandomGetKeyN[K comparable, V any](m map[K]V, n int) (ks []K)

RandomGetKeyN 随机获取 n 个 key

  • 获取到的元素不会是重复的,当 map 的长度不足 n 时,返回的元素等同于 hash.KeyToSlice

func RandomGetN added in v0.0.9

func RandomGetN[K comparable, V any](m map[K]V, n int) (vs []V)

RandomGetN 随机获取 n 个元素

  • 获取到的元素不会是重复的,当 map 的长度不足 n 时,返回的元素等同于 hash.ToSlice

func Reversal

func Reversal[K comparable, V comparable](m map[K]V) map[V]K

Reversal 将 map 的 key 和 value 互换

func Sum

func Sum[K comparable, V generic.Number](m map[K]V) V

Sum 计算一个 map 中的 value 总和

func ToIterator added in v0.0.13

func ToIterator[V comparable](slice []V) map[V]struct{}

ToIterator 将切片转换为 Iterator

func ToJson added in v0.0.4

func ToJson[K comparable, V any](m map[K]V) string

ToJson 将 map 转换为 json 字符串

func ToMap

func ToMap[V any](slice []V) map[int]V

ToMap 将切片转换为 map

func ToMapBool

func ToMapBool[V comparable](slice []V) map[V]bool

ToMapBool 将切片转换为 map,value作为Key

func ToSlice

func ToSlice[K comparable, V any](m map[K]V) []V

ToSlice 将 map 的 value 转换为切片

Types

type Consistency

type Consistency struct {
	// contains filtered or unexported fields
}

Consistency 一致性哈希生成

https://blog.csdn.net/zhpCSDN921011/article/details/126845397

func NewConsistency

func NewConsistency(replicas int) *Consistency

func (*Consistency) AddNode

func (slf *Consistency) AddNode(keys ...int)

AddNode 添加节点

func (*Consistency) PickNode

func (slf *Consistency) PickNode(key any) int

PickNode 获取与 key 最接近的节点

type Set added in v0.0.21

type Set[K comparable] map[K]struct{}

Set 集合

func NewSet added in v0.0.21

func NewSet[K comparable](ks ...K) Set[K]

NewSet 创建一个 Set 集合

func (Set[K]) Add added in v0.0.21

func (s Set[K]) Add(key K)

Add 添加元素

func (Set[K]) AddAll added in v0.0.21

func (s Set[K]) AddAll(keys ...K)

AddAll 添加多个元素

func (Set[K]) AllExist added in v0.0.21

func (s Set[K]) AllExist(keys ...K) bool

AllExist 检查多个 key 是否存在

func (Set[K]) Clear added in v0.0.21

func (s Set[K]) Clear()

Clear 清空集合

func (Set[K]) Exist added in v0.0.21

func (s Set[K]) Exist(key K) bool

Exist 检查特定 key 是否存在

func (Set[K]) RandomGet added in v0.0.21

func (s Set[K]) RandomGet() (k K)

RandomGet 随机获取一个元素

func (Set[K]) Remove added in v0.0.21

func (s Set[K]) Remove(key K)

Remove 移除元素

func (Set[K]) RemoveAll added in v0.0.21

func (s Set[K]) RemoveAll(keys ...K)

RemoveAll 移除多个元素

func (Set[K]) Size added in v0.0.21

func (s Set[K]) Size() int

Size 集合长度

func (Set[K]) ToJson added in v0.0.21

func (s Set[K]) ToJson() string

ToJson 转换为 json 字符串

func (Set[K]) ToMap added in v0.0.21

func (s Set[K]) ToMap() map[K]struct{}

ToMap 转换为 map

func (Set[K]) ToSlice added in v0.0.21

func (s Set[K]) ToSlice() []K

ToSlice 转换为切片

type SortMap

type SortMap[K comparable, V any] struct {
	// contains filtered or unexported fields
}

SortMap 有序的 map 实现

func NewSortMap

func NewSortMap[K comparable, V any]() *SortMap[K, V]

func ToSortMap

func ToSortMap[V any](slice []V) SortMap[int, V]

ToSortMap 将切片转换为 SortMap

func (*SortMap[K, V]) Del

func (slf *SortMap[K, V]) Del(key K)

func (*SortMap[K, V]) For

func (slf *SortMap[K, V]) For(handle func(key K, value V) bool)

func (*SortMap[K, V]) ForSort

func (slf *SortMap[K, V]) ForSort(handle func(key K, value V) bool)

func (*SortMap[K, V]) Get

func (slf *SortMap[K, V]) Get(key K) V

func (*SortMap[K, V]) KeyToSlice

func (slf *SortMap[K, V]) KeyToSlice() []K

func (*SortMap[K, V]) Set

func (slf *SortMap[K, V]) Set(key K, value V)

func (*SortMap[K, V]) ToMap

func (slf *SortMap[K, V]) ToMap() map[K]V

func (*SortMap[K, V]) ToSlice

func (slf *SortMap[K, V]) ToSlice() []V

func (*SortMap[K, V]) ToSliceSort

func (slf *SortMap[K, V]) ToSliceSort() []V

Jump to

Keyboard shortcuts

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