From: Dan Fuhry Date: Tue, 27 Feb 2024 20:56:27 +0000 (-0500) Subject: utils/hashset: add AsSortedSlice() X-Git-Url: https://go.fuhry.dev/?a=commitdiff_plain;h=a6b678330226c35d0213c67a79afc6f4b76662b6;p=runtime.git utils/hashset: add AsSortedSlice() --- diff --git a/utils/hashset/hashset.go b/utils/hashset/hashset.go index 7509728..40cfd8b 100644 --- a/utils/hashset/hashset.go +++ b/utils/hashset/hashset.go @@ -1,6 +1,8 @@ package hashset import ( + "fmt" + "sort" "sync" ) @@ -118,6 +120,19 @@ func (hs *HashSet[TKey]) AsSlice() []TKey { return hs.asSlice() } +func (hs *HashSet[TKey]) AsSortedSlice() []TKey { + hs.lock.RLock() + defer hs.lock.RUnlock() + + sl := hs.asSlice() + + sort.Slice(sl, func(i, j int) bool { + return fmt.Sprintf("%+v", sl[i]) < fmt.Sprintf("%+v", sl[j]) + }) + + return sl +} + func (hs *HashSet[TKey]) asSlice() []TKey { s := make([]TKey, len(hs.data))