mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
Leverage sort Interface to provide sortUnique function
This commit is contained in:
parent
9476e0b374
commit
53adfb38f4
@ -21,6 +21,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/minio/minio-xl/pkg/probe"
|
||||
@ -356,6 +357,6 @@ func (fs Filesystem) filterObjects(bucket string, content contentInfo, resources
|
||||
return ObjectMetadata{}, resources, err.Trace()
|
||||
}
|
||||
}
|
||||
sortUnique(resources.CommonPrefixes)
|
||||
sortUnique(sort.StringSlice(resources.CommonPrefixes))
|
||||
return metadata, resources, nil
|
||||
}
|
||||
|
@ -45,18 +45,23 @@ func sanitizeWindowsPaths(paths ...string) []string {
|
||||
return results
|
||||
}
|
||||
|
||||
// sortUnique sort a slice in lexical order, removing duplicate elements
|
||||
func sortUnique(objects []string) []string {
|
||||
results := []string{}
|
||||
seen := make(map[string]string)
|
||||
for _, val := range objects {
|
||||
if _, ok := seen[val]; !ok {
|
||||
results = append(results, val)
|
||||
seen[val] = val
|
||||
}
|
||||
// sortUnique returns n, the number of distinct elements in data in sorted order.
|
||||
func sortUnique(data sort.Interface) (n int) {
|
||||
if n = data.Len(); n < 2 {
|
||||
return n
|
||||
}
|
||||
sort.Strings(results)
|
||||
return results
|
||||
sort.Sort(data)
|
||||
a, b := 0, 1
|
||||
for b < n {
|
||||
if data.Less(a, b) {
|
||||
a++
|
||||
if a != b {
|
||||
data.Swap(a, b)
|
||||
}
|
||||
}
|
||||
b++
|
||||
}
|
||||
return a + 1
|
||||
}
|
||||
|
||||
type contentInfo struct {
|
||||
|
Loading…
Reference in New Issue
Block a user