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 DiffTwoSlice[T comparable](a []T, b []T) ([]T, []T)
- func Include[T comparable](a T, others ...T) bool
- func MapKeyToSlice[T comparable, V any](a map[T]V) []T
- func MapValueToSlice[T comparable, V any](a map[T]V) []V
- func MapZipSliceToMap[T comparable, V any](a []T, b []V) (map[T]V, error)
- func Max[T ttypes.Ordered](data ...T) T
- func MaxN[T ttypes.Ordered](data []T, n int) []T
- func MaxNWithOrder[T ttypes.Ordered](data []T, n int) []T
- func Min[T ttypes.Ordered](data ...T) T
- func MinN[T ttypes.Ordered](data []T, n int) []T
- func MinNWithOrder[T ttypes.Ordered](data []T, n int) []T
- func SetToSlice[K comparable](u BuiltinSet[K]) []K
- func SliceAbsoluteEqual[T comparable](a []T, b []T) bool
- func SliceConvertToInt(data interface{}) ([]int, error)
- func SliceConvertToInt64(data interface{}) ([]int64, error)
- func SliceConvertToString(data interface{}) ([]string, error)
- func SliceCopy[T any](data []T, ns ...int) []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 SliceIndexOrder[T ttypes.Ordered](a []T, b T) int
- func SliceInsert[T any](data *[]T, i int, x ...T)
- 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 SlicePopBack[T any](data *[]T) (T, bool)
- func SliceRemove[T comparable](data *[]T, b T)
- func SliceRemoveIndex[T any](data *[]T, i int)
- func SliceRemoveRange[T any](data *[]T, i int, j int)
- 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 SliceTail[T any](data []T, d ...T) 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
- type Tuple10E
- type Tuple2E
- type Tuple3E
- type Tuple4E
- type Tuple5E
- type Tuple6E
- type Tuple7E
- type Tuple8E
- type Tuple9E
- type WaitFor
- type WaitForPriorityQueue
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DiffTwoSlice ¶ added in v1.0.5
func DiffTwoSlice[T comparable](a []T, b []T) ([]T, []T)
func Include ¶ added in v1.0.4
func Include[T comparable](a T, others ...T) bool
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 MapZipSliceToMap ¶ added in v1.0.1
func MapZipSliceToMap[T comparable, V any](a []T, b []V) (map[T]V, error)
func MaxNWithOrder ¶ added in v1.0.1
func MinNWithOrder ¶ added in v1.0.1
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 SliceConvertToInt ¶ added in v1.0.1
func SliceConvertToInt64 ¶ added in v1.0.1
func SliceConvertToString ¶ added in v1.0.1
func SliceIndex ¶ added in v1.0.1
func SliceIndex[T comparable](a []T, b T) int
SliceIndex 获取元素在切片中的下标,如果不存在返回-1
func SliceIndexOrder ¶ added in v1.0.3
func SliceInsert ¶ added in v1.0.3
SliceInsert 把元素插入到data的指定位置
func SliceLogicalEqual ¶
func SliceLogicalEqual[T comparable](a []T, b []T) bool
SliceLogicalEqual 判断两个Slice是否逻辑一样,和顺序无关
func SlicePopBack ¶ added in v1.0.3
func SliceRemove ¶ added in v1.0.1
func SliceRemove[T comparable](data *[]T, b T)
SliceRemove 原地删除元素
func SliceRemoveIndex ¶ added in v1.0.3
func SliceRemoveRange ¶ added in v1.0.3
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.
type Tuple10E ¶ added in v1.0.1
type Tuple10E[A any, B any, C any, D any, E any, F any, G any, H any, I any, J any] struct { Tuple9E[A, B, C, D, E, F, G, H, I] E10 J }
func NewTuple10E ¶ added in v1.0.1
type Tuple2E ¶ added in v1.0.1
func NewTuple2E ¶ added in v1.0.1
type Tuple3E ¶ added in v1.0.1
func NewTuple3E ¶ added in v1.0.1
type Tuple4E ¶ added in v1.0.1
func NewTuple4E ¶ added in v1.0.1
type Tuple5E ¶ added in v1.0.1
func NewTuple5E ¶ added in v1.0.1
type Tuple6E ¶ added in v1.0.1
func NewTuple6E ¶ added in v1.0.1
type Tuple7E ¶ added in v1.0.1
type Tuple7E[A any, B any, C any, D any, E any, F any, G any] struct { Tuple6E[A, B, C, D, E, F] E7 G }
func NewTuple7E ¶ added in v1.0.1
type Tuple8E ¶ added in v1.0.1
type Tuple8E[A any, B any, C any, D any, E any, F any, G any, H any] struct { Tuple7E[A, B, C, D, E, F, G] E8 H }
func NewTuple8E ¶ added in v1.0.1
type Tuple9E ¶ added in v1.0.1
type Tuple9E[A any, B any, C any, D any, E any, F any, G any, H any, I any] struct { Tuple8E[A, B, C, D, E, F, G, H] E9 I }
func NewTuple9E ¶ added in v1.0.1
type WaitFor ¶ added in v1.0.4
type WaitFor[T comparable] struct { // contains filtered or unexported fields }
WaitFor holds the data to add and the time it should be added
type WaitForPriorityQueue ¶ added in v1.0.4
type WaitForPriorityQueue[T comparable] struct { // contains filtered or unexported fields }
WaitForPriorityQueue implements a priority queue for WaitFor items.
WaitForPriorityQueue implements heap.Interface. The item occurring next in time (i.e., the item with the smallest readyAt) is at the root (index 0). Peek returns this minimum item at index 0. Pop returns the minimum item after it has been removed from the queue and placed at index Len()-1 by container/heap. Push adds an item at index Len(), and container/heap percolates it into the correct location.
func NewWaitForPriorityQueue ¶ added in v1.0.4
func NewWaitForPriorityQueue[T comparable]() *WaitForPriorityQueue[T]
func (*WaitForPriorityQueue[T]) Len ¶ added in v1.0.4
func (pq *WaitForPriorityQueue[T]) Len() int
func (*WaitForPriorityQueue[T]) Peek ¶ added in v1.0.4
func (pq *WaitForPriorityQueue[T]) Peek() *WaitFor[T]
Peek returns the item at the beginning of the queue, without removing the item or otherwise mutating the queue. It is safe to call directly.
func (*WaitForPriorityQueue[T]) Pop ¶ added in v1.0.4
func (pq *WaitForPriorityQueue[T]) Pop() *WaitFor[T]
func (*WaitForPriorityQueue[T]) Push ¶ added in v1.0.4
func (pq *WaitForPriorityQueue[T]) Push(entry *WaitFor[T], ignore bool)
Push adds the entry to the priority queue, or updates the readyAt if it already exists in the queue