From a6b678330226c35d0213c67a79afc6f4b76662b6 Mon Sep 17 00:00:00 2001 From: Dan Fuhry Date: Tue, 27 Feb 2024 15:56:27 -0500 Subject: [PATCH] utils/hashset: add AsSortedSlice() --- utils/hashset/hashset.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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)) -- 2.50.1