in frequencies/longs_sketch.go [558:606]
func (s *LongsSketch) sortItems(threshold int64, errorType errorType) ([]*Row, error) {
rowList := make([]*Row, 0)
iter := s.hashMap.iterator()
if errorType == ErrorTypeEnum.NoFalseNegatives {
for iter.next() {
est, err := s.GetEstimate(iter.getKey())
if err != nil {
return nil, err
}
ub, err := s.GetUpperBound(iter.getKey())
if err != nil {
return nil, err
}
lb, err := s.GetLowerBound(iter.getKey())
if err != nil {
return nil, err
}
if ub >= threshold {
row := newRow(iter.getKey(), est, ub, lb)
rowList = append(rowList, row)
}
}
} else { //NO_FALSE_POSITIVES
for iter.next() {
est, err := s.GetEstimate(iter.getKey())
if err != nil {
return nil, err
}
ub, err := s.GetUpperBound(iter.getKey())
if err != nil {
return nil, err
}
lb, err := s.GetLowerBound(iter.getKey())
if err != nil {
return nil, err
}
if lb >= threshold {
row := newRow(iter.getKey(), est, ub, lb)
rowList = append(rowList, row)
}
}
}
sort.Slice(rowList, func(i, j int) bool {
return rowList[i].est > rowList[j].est
})
return rowList, nil
}