sets

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2024 License: Apache-2.0 Imports: 1 Imported by: 1

README

sets

supportT which implement comparable interface and builtin type.

Go.Dev reference codecov Tests Go Report Card License Tag

License

This project is under MIT License. See the LICENSE file for the full license text.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Set

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

Set sets.Set is a set of `T`, implemented via map[T]struct{} for minimal memory consumption.

func New

func New[T comparable](items ...T) Set[T]

New creates a T from a list of values.

func NewFrom added in v1.0.0

func NewFrom[T comparable, V any, M ~map[T]V](m M) Set[T]

NewFrom creates a T from a keys of a map[T](? extends any). If the value passed in is not actually a map, this will panic.

func (Set[T]) Clone

func (s Set[T]) Clone() Set[T]

Clone returns a new Set with a copy of s.

func (Set[T]) Contains

func (s Set[T]) Contains(item T) bool

Contains returns true if and only if item is contained in the set.

func (Set[T]) ContainsAll

func (s Set[T]) ContainsAll(items ...T) bool

ContainsAll returns true if and only if all items are contained in the set.

func (Set[T]) ContainsAny

func (s Set[T]) ContainsAny(items ...T) bool

ContainsAny returns true if any items are contained in the set.

func (Set[T]) Delete

func (s Set[T]) Delete(items ...T) Set[T]

Delete removes all items from the set.

func (Set[T]) Diff added in v1.2.0

func (s Set[T]) Diff(s2 Set[T]) (added, removed, remained Set[T])

Diff returns s diff of s2, return added, removed, remained sets with the given s2 set. For example: s1 = {a1, a3, a5, a7} s2 = {a3, a4, a5, a6} added = {a4, a6} removed = {a1, a7} remained = {a3, a6}

func (Set[T]) DiffSlice added in v1.2.0

func (s Set[T]) DiffSlice(s2 Set[T]) (added, removed, remained []T)

DiffSlice returns s diff of s2, return added, removed, remained slices with the given s2 set. For example: s1 = {a1, a3, a5, a7} s2 = {a3, a4, a5, a6} added = {a4, a6} removed = {a1, a7} remained = {a3, a6}

func (Set[T]) DiffVary added in v1.3.0

func (s Set[T]) DiffVary(s2 Set[T]) (added, removed Set[T])

DiffVary returns s diff of s2, return added, removed sets with the given s2 set. For example: s1 = {a1, a3, a5, a7} s2 = {a3, a4, a5, a6} added = {a4, a6} removed = {a1, a7}

func (Set[T]) DiffVarySlice added in v1.3.0

func (s Set[T]) DiffVarySlice(s2 Set[T]) (added, removed []T)

DiffVarySlice returns s diff of s2, return added, removed slices with the given s2 set. For example: s1 = {a1, a3, a5, a7} s2 = {a3, a4, a5, a6} added = {a4, a6} removed = {a1, a7}

func (Set[T]) Difference

func (s Set[T]) Difference(s2 Set[T]) Set[T]

Difference returns a set of objects that are not in s2 For example: s1 = {a1, a2, a3} s2 = {a1, a2, a4, a5} s1.Difference(s2) = {a3} s2.Difference(s1) = {a4, a5}.

func (Set[T]) DifferenceSlice added in v1.2.0

func (s Set[T]) DifferenceSlice(s2 Set[T]) []T

DifferenceSlice returns a slices of objects that are not in s2 For example: s1 = {a1, a2, a3} s2 = {a1, a2, a4, a5} s1.Difference(s2) = {a3} s2.Difference(s1) = {a4, a5}.

func (Set[T]) Each

func (s Set[T]) Each(f func(item T) bool)

Each traverses the items in the Set, calling the provided function for each set member. Traversal will continue until all items in the Set have been visited, or if the closure returns false.

func (Set[T]) Equal

func (s Set[T]) Equal(s2 Set[T]) bool

Equal returns true if and only if s1 is equal (as a set) to s2. Two sets are equal if their membership is identical. (In practice, this means same elements, order doesn't matter).

func (Set[T]) Insert

func (s Set[T]) Insert(items ...T) Set[T]

Insert adds items to the set.

func (Set[T]) Intersection

func (s Set[T]) Intersection(s2 Set[T]) Set[T]

Intersection returns a new set which includes the item in BOTH s1 and s2 For example: s1 = {a1, a2} s2 = {a2, a3} s1.Intersection(s2) = {a2}.

func (Set[T]) IntersectionSlice added in v1.2.0

func (s Set[T]) IntersectionSlice(s2 Set[T]) []T

IntersectionSlice returns a slice which includes the item in BOTH s1 and s2 For example: s1 = {a1, a2} s2 = {a2, a3} s1.Intersection(s2) = {a2}.

func (Set[T]) IsSubset

func (s Set[T]) IsSubset(s2 Set[T]) bool

IsSubset returns true if and only if s1 is a superset of s2.

func (Set[T]) IsSuperset

func (s Set[T]) IsSuperset(s2 Set[T]) bool

IsSuperset returns true if and only if s1 is a superset of s2.

func (Set[T]) Len

func (s Set[T]) Len() int

Len returns the size of the set.

func (Set[T]) List

func (s Set[T]) List() []T

List returns the contents as a sorted slice.

func (Set[T]) Merge

func (s Set[T]) Merge(s2 Set[T]) Set[T]

Merge is like Union, however it modifies the current set it's applied on with the given s2 set. For example: s1 = {a1, a2} s2 = {a3, a4} s1.Merge(s2), s1 = {a1, a2, a3, a4} s2.Merge(s1), s2 = {a1, a2, a3, a4}.

func (Set[T]) Pop

func (s Set[T]) Pop() (v T, ok bool)

Pop Returns a single element from the set.

func (Set[T]) Union

func (s Set[T]) Union(s2 Set[T]) Set[T]

Union returns a new set which includes items in either s1 or s2. For example: s1 = {a1, a2} s2 = {a3, a4} s1.Union(s2) = {a1, a2, a3, a4} s2.Union(s1) = {a1, a2, a3, a4}.

func (Set[T]) UnionSlice added in v1.2.0

func (s Set[T]) UnionSlice(s2 Set[T]) []T

UnionSlice returns a slice which includes items in either s1 or s2. For example: s1 = {a1, a2} s2 = {a3, a4} s1.Union(s2) = {a1, a2, a3, a4} s2.Union(s1) = {a1, a2, a3, a4}.

func (Set[T]) Values added in v1.3.0

func (s Set[T]) Values() iter.Seq[T]

Jump to

Keyboard shortcuts

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