Documentation ¶
Overview ¶
Package ds Dlist copy from https://github.com/chen3feng/stl4go/blob/master/dlist.go
Package ds queue copy from https://github.com/eapache/queue/blob/master/queue.go
Package ds BuiltinSet copy from https://github.com/chen3feng/stl4go/blob/master/builtin_set.go
Package ds stack copy from https://github.com/chen3feng/stl4go/blob/master/stack.go
Index ¶
- func BinarySearch[T ttypes.Ordered](data []T, value T) int
- func MapKeyToSlice[T comparable, V any](a map[T]V) []T
- func MapValueToSlice[T comparable, V any](a map[T]V) []V
- func Max[T ttypes.Ordered](data ...T) T
- func Min[T ttypes.Ordered](data ...T) T
- func SetToSlice[K comparable](u BuiltinSet[K]) []K
- func SliceAbsoluteEqual[T comparable](a []T, b []T) bool
- func SliceCopy[T any](data []T) []T
- func SliceExclude[T comparable](a []T, b T) bool
- func SliceFilter[T any](a []T, filter func(i int) bool) []T
- func SliceInclude[T comparable](a []T, b T) bool
- func SliceIndex[T comparable](a []T, b T) int
- func SliceLogicalEqual[T comparable](a []T, b []T) bool
- func SliceMap[T any](a []T, handler func(i int))
- func SliceMax[T ttypes.Ordered](data []T) T
- func SliceMin[T ttypes.Ordered](data []T) T
- func SliceRemove[T comparable](data *[]T, b T)
- func SliceReplace[T comparable](data []T, a T, b T)
- func SliceReverse[T any](data []T)
- func SliceReverseCopy[T any](data []T) []T
- func SliceShuffle[T any](data []T)
- func SliceUnique[T comparable](data []T) []T
- type BuiltinSet
- func (s BuiltinSet[K]) Clear()
- func (s BuiltinSet[K]) Delete(k K)
- func (s BuiltinSet[K]) Difference(other BuiltinSet[K]) BuiltinSet[K]
- func (s BuiltinSet[K]) ForEach(cb func(k K))
- func (s BuiltinSet[K]) ForEachIf(cb func(k K) bool)
- func (s BuiltinSet[K]) Has(k K) bool
- func (s BuiltinSet[K]) Insert(k K) bool
- func (s BuiltinSet[K]) InsertN(ks ...K) int
- func (s BuiltinSet[K]) Intersection(other BuiltinSet[K]) BuiltinSet[K]
- func (s BuiltinSet[K]) IsDisjointOf(other BuiltinSet[K]) bool
- func (s BuiltinSet[K]) IsEmpty() bool
- func (s BuiltinSet[K]) IsSubsetOf(other BuiltinSet[K]) bool
- func (s BuiltinSet[K]) IsSupersetOf(other BuiltinSet[K]) bool
- func (s BuiltinSet[K]) Keys() []K
- func (s BuiltinSet[K]) Len() int
- func (s BuiltinSet[K]) Remove(k K) bool
- func (s BuiltinSet[K]) RemoveN(ks ...K) int
- func (s BuiltinSet[K]) String() string
- func (s BuiltinSet[K]) Union(other BuiltinSet[K]) BuiltinSet[K]
- func (s BuiltinSet[K]) Update(other BuiltinSet[K])
- type CounterMap
- type GroupMap
- type Iterator
- type List
- func (l *List[T]) Back() T
- func (l *List[T]) Clear()
- func (l *List[T]) ForEach(cb func(val T))
- func (l *List[T]) ForEachIf(cb func(val T) bool)
- func (l *List[T]) ForEachMutable(cb func(val *T))
- func (l *List[T]) ForEachMutableIf(cb func(val *T) bool)
- func (l *List[T]) Front() T
- func (l *List[T]) IsEmpty() bool
- func (l *List[T]) Iterate() MutableIterator[T]
- func (l *List[T]) Len() int
- func (l *List[T]) PopBack() T
- func (l *List[T]) PopFront() T
- func (l *List[T]) PushBack(val T)
- func (l *List[T]) PushFront(val T)
- func (l *List[T]) TryPopBack() (T, bool)
- func (l *List[T]) TryPopFront() (T, bool)
- type MapCompareResult
- func MapComplexCompareWithKey[T comparable, V any](a map[T]V, b map[T]V, key T) MapCompareResult
- func MapComplexFullCompare[T comparable, V any](a map[T]V, b map[T]V) MapCompareResult
- func MapNativeCompareWithKey[T comparable, V ttypes.Ordered](a map[T]V, b map[T]V, key T) MapCompareResult
- func MapNativeFullCompare[T comparable, V ttypes.Ordered](a map[T]V, b map[T]V) MapCompareResult
- type MapLocker
- type MapRWLocker
- type MutableIterator
- type Queue
- type SortedMap
- type Stack
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MapKeyToSlice ¶ added in v1.0.1
func MapKeyToSlice[T comparable, V any](a map[T]V) []T
func MapValueToSlice ¶ added in v1.0.1
func MapValueToSlice[T comparable, V any](a map[T]V) []V
func SetToSlice ¶
func SetToSlice[K comparable](u BuiltinSet[K]) []K
SetToSlice convert from set to slice
func SliceAbsoluteEqual ¶
func SliceAbsoluteEqual[T comparable](a []T, b []T) bool
SliceAbsoluteEqual 判断两个slice是否一样,严格按照顺序比较
func SliceIndex ¶ added in v1.0.1
func SliceIndex[T comparable](a []T, b T) int
SliceIndex 获取元素在切片中的下标,如果不存在返回-1
func SliceLogicalEqual ¶
func SliceLogicalEqual[T comparable](a []T, b []T) bool
SliceLogicalEqual 判断两个Slice是否逻辑一样,和顺序无关
func SliceRemove ¶ added in v1.0.1
func SliceRemove[T comparable](data *[]T, b T)
SliceRemove 原地删除元素
func SliceReplace ¶ added in v1.0.1
func SliceReplace[T comparable](data []T, a T, b T)
SliceReplace 原地替换元素
func SliceReverseCopy ¶ added in v1.0.1
func SliceReverseCopy[T any](data []T) []T
SliceReverseCopy 转置切片并复制
Types ¶
type BuiltinSet ¶
type BuiltinSet[K comparable] map[K]struct{}
BuiltinSet is an associative container that contains an unordered set of unique objects of type K.
func NewSet ¶
func NewSet[K comparable]() BuiltinSet[K]
func SetFromSlice ¶
func SetFromSlice[K comparable](ks []K) BuiltinSet[K]
SetFromSlice create a new BuiltinSet object with the initial content from slice.
func SetOf ¶
func SetOf[K comparable](ks ...K) BuiltinSet[K]
SetOf creates a new BuiltinSet object with the initial content from ks.
func (BuiltinSet[K]) Clear ¶
func (s BuiltinSet[K]) Clear()
Clear implements the Container interface.
func (BuiltinSet[K]) Delete ¶
func (s BuiltinSet[K]) Delete(k K)
Delete deletes an element from the set. It returns nothing, so it's faster than Remove.
func (BuiltinSet[K]) Difference ¶
func (s BuiltinSet[K]) Difference(other BuiltinSet[K]) BuiltinSet[K]
Difference returns a new set with elements in the set that are not in other.
func (BuiltinSet[K]) ForEach ¶
func (s BuiltinSet[K]) ForEach(cb func(k K))
ForEach implements the Set interface.
func (BuiltinSet[K]) ForEachIf ¶
func (s BuiltinSet[K]) ForEachIf(cb func(k K) bool)
ForEachIf implements the Container interface.
func (BuiltinSet[K]) Insert ¶
func (s BuiltinSet[K]) Insert(k K) bool
Insert implements the Set interface.
func (BuiltinSet[K]) InsertN ¶
func (s BuiltinSet[K]) InsertN(ks ...K) int
InsertN implements the Set interface.
func (BuiltinSet[K]) Intersection ¶
func (s BuiltinSet[K]) Intersection(other BuiltinSet[K]) BuiltinSet[K]
Intersection returns a new set with elements common to the set and other.
func (BuiltinSet[K]) IsDisjointOf ¶
func (s BuiltinSet[K]) IsDisjointOf(other BuiltinSet[K]) bool
IsDisjointOf return True if the set has no elements in common with other. Sets are disjoint if and only if their intersection is the empty set.
func (BuiltinSet[K]) IsEmpty ¶
func (s BuiltinSet[K]) IsEmpty() bool
IsEmpty implements the Container interface.
func (BuiltinSet[K]) IsSubsetOf ¶
func (s BuiltinSet[K]) IsSubsetOf(other BuiltinSet[K]) bool
IsSubsetOf tests whether every element in the set is in other.
func (BuiltinSet[K]) IsSupersetOf ¶
func (s BuiltinSet[K]) IsSupersetOf(other BuiltinSet[K]) bool
IsSupersetOf tests whether every element in other is in the set.
func (BuiltinSet[K]) Keys ¶
func (s BuiltinSet[K]) Keys() []K
Keys return a copy of all keys as a slice.
func (BuiltinSet[K]) Remove ¶
func (s BuiltinSet[K]) Remove(k K) bool
Remove implements the Set interface.
func (BuiltinSet[K]) RemoveN ¶
func (s BuiltinSet[K]) RemoveN(ks ...K) int
RemoveN implements the Set interface.
func (BuiltinSet[K]) String ¶
func (s BuiltinSet[K]) String() string
String implements the fmt.Stringer interface.
func (BuiltinSet[K]) Union ¶
func (s BuiltinSet[K]) Union(other BuiltinSet[K]) BuiltinSet[K]
Union returns a new set with elements from the set and other.
func (BuiltinSet[K]) Update ¶
func (s BuiltinSet[K]) Update(other BuiltinSet[K])
Update adds all elements from other to set. set |= other.
type CounterMap ¶
type CounterMap[K comparable] map[K]int
func NewCounterMap ¶
func NewCounterMap[K comparable](data []K) CounterMap[K]
func (CounterMap[K]) Equal ¶
func (c CounterMap[K]) Equal(other CounterMap[K]) bool
type GroupMap ¶
type GroupMap[K comparable, V any] map[K][]V
func NewGroupMap ¶
func NewGroupMap[K comparable, V any](data []V, getKeyHandler func(V) K) GroupMap[K, V]
type Iterator ¶ added in v1.0.1
type Iterator[T any] interface { IsNotEnd() bool // Whether it is point to the end of the range. MoveToNext() // Let it point to the next element. Value() T // Return the value of current element. }
Iterator is the interface for container's iterator.
type List ¶ added in v1.0.1
type List[T any] struct { // contains filtered or unexported fields }
List is a doubly linked list.
func (*List[T]) Back ¶ added in v1.0.1
func (l *List[T]) Back() T
Back returns the last element in the container.
func (*List[T]) ForEach ¶ added in v1.0.1
func (l *List[T]) ForEach(cb func(val T))
ForEach iterate the list, apply each element to the cb callback function.
func (*List[T]) ForEachIf ¶ added in v1.0.1
ForEachIf iterate the list, apply each element to the cb callback function, stop if cb returns false.
func (*List[T]) ForEachMutable ¶ added in v1.0.1
func (l *List[T]) ForEachMutable(cb func(val *T))
ForEachMutable iterate the list, apply pointer of each element to the cb callback function.
func (*List[T]) ForEachMutableIf ¶ added in v1.0.1
ForEachMutableIf iterate the list, apply pointer of each element to the cb callback function, stop if cb returns false.
func (*List[T]) Front ¶ added in v1.0.1
func (l *List[T]) Front() T
Front returns the first element in the container.
func (*List[T]) Iterate ¶ added in v1.0.1
func (l *List[T]) Iterate() MutableIterator[T]
Iterate returns an iterator to the first element in the list.
func (*List[T]) PopBack ¶ added in v1.0.1
func (l *List[T]) PopBack() T
PopBack popups a element from the back of the list.
func (*List[T]) PopFront ¶ added in v1.0.1
func (l *List[T]) PopFront() T
PopFront popups a element from the front of the list.
func (*List[T]) PushBack ¶ added in v1.0.1
func (l *List[T]) PushBack(val T)
PushBack pushes an element at the back of the list.
func (*List[T]) PushFront ¶ added in v1.0.1
func (l *List[T]) PushFront(val T)
PushFront pushes an element at the front of the list.
func (*List[T]) TryPopBack ¶ added in v1.0.1
TryPopBack tries to popup a element from the back of the list.
func (*List[T]) TryPopFront ¶ added in v1.0.1
TryPopFront tries to popup a element from the front of the list.
type MapCompareResult ¶ added in v1.0.1
type MapCompareResult int
const ( LeftKeyMiss MapCompareResult = iota + 1 RightKeyMiss AllKeyMiss NotEqual Equal LeftLargeThanRight LeftLessThanRight )
func MapComplexCompareWithKey ¶ added in v1.0.1
func MapComplexCompareWithKey[T comparable, V any](a map[T]V, b map[T]V, key T) MapCompareResult
MapComplexCompareWithKey 复杂值的key比较
func MapComplexFullCompare ¶ added in v1.0.1
func MapComplexFullCompare[T comparable, V any](a map[T]V, b map[T]V) MapCompareResult
MapComplexFullCompare 复杂值的全部比较
func MapNativeCompareWithKey ¶ added in v1.0.1
func MapNativeCompareWithKey[T comparable, V ttypes.Ordered](a map[T]V, b map[T]V, key T) MapCompareResult
MapNativeCompareWithKey 简单值的key比较
func MapNativeFullCompare ¶ added in v1.0.1
func MapNativeFullCompare[T comparable, V ttypes.Ordered](a map[T]V, b map[T]V) MapCompareResult
MapNativeFullCompare 简单值的全部比较
type MapLocker ¶
type MapLocker[K comparable, V any] struct { // contains filtered or unexported fields }
func NewMapLocker ¶
func NewMapLocker[K comparable, V any]() *MapLocker[K, V]
type MapRWLocker ¶
type MapRWLocker[K comparable, V any] struct { // contains filtered or unexported fields }
func NewMapRWLocker ¶
func NewMapRWLocker[K comparable, V any]() *MapRWLocker[K, V]
func (*MapRWLocker[K, V]) Contain ¶
func (m *MapRWLocker[K, V]) Contain(key K) bool
func (*MapRWLocker[K, V]) Foreach ¶
func (m *MapRWLocker[K, V]) Foreach(handler func(key K, value V))
func (*MapRWLocker[K, V]) Get ¶
func (m *MapRWLocker[K, V]) Get(key K) (V, bool)
func (*MapRWLocker[K, V]) Set ¶
func (m *MapRWLocker[K, V]) Set(key K, value V)
type MutableIterator ¶ added in v1.0.1
type MutableIterator[T any] interface { Iterator[T] Pointer() *T // Return the pointer to the value of current element. }
MutableIterator is the interface for container's mutable iterator.
type Queue ¶ added in v1.0.1
type Queue[T any] struct { // contains filtered or unexported fields }
Queue represents a single instance of the queue data structure.
func (*Queue[T]) Add ¶ added in v1.0.1
func (q *Queue[T]) Add(elem T)
Add puts an element on the end of the queue.
func (*Queue[T]) Get ¶ added in v1.0.1
Get returns the element at index i in the queue. If the index is invalid, the call will panic. This method accepts both positive and negative index values. Index 0 refers to the first element, and index -1 refers to the last.
func (*Queue[T]) Length ¶ added in v1.0.1
Length returns the number of elements currently stored in the queue.
type SortedMap ¶
type SortedMap[K ttypes.Ordered, V any] struct { ReverseOpt bool Tuples []ttypes.Tuple[K, V] RawMap map[K]V }
SortedMap 有序Map,底层维护了有序切片 如果需要对map进行修改需要执行Rebuild来维护有序行,否则会导致不一致
func NewSortedMap ¶
type Stack ¶ added in v1.0.1
type Stack[T any] struct { // contains filtered or unexported fields }
Stack s is a container adaptor that provides the functionality of a stack, a LIFO (last-in, first-out) data structure.
func NewStackCap ¶ added in v1.0.1
NewStackCap creates a new Stack object with the specified capicity.
func (*Stack[T]) Clear ¶ added in v1.0.1
func (s *Stack[T]) Clear()
Clear implements the Container interface.
func (*Stack[T]) Pop ¶ added in v1.0.1
func (s *Stack[T]) Pop() T
Pop popups an element from the top of the stack. It must be called when IsEmpty() returned false, otherwise it will panic.
func (*Stack[T]) Push ¶ added in v1.0.1
func (s *Stack[T]) Push(t T)
Push pushes the element to the top of the stack.