in frequencies/items_sketch.go [475:523]
func (i *ItemsSketch[C]) sortItems(threshold int64, errorType errorType) ([]*RowItem[C], error) {
rowList := make([]*RowItem[C], 0)
iter := i.hashMap.iterator()
if errorType == ErrorTypeEnum.NoFalseNegatives {
for iter.next() {
est, err := i.GetEstimate(iter.getKey())
if err != nil {
return nil, err
}
ub, err := i.GetUpperBound(iter.getKey())
if err != nil {
return nil, err
}
lb, err := i.GetLowerBound(iter.getKey())
if err != nil {
return nil, err
}
if ub >= threshold {
row := newRowItem[C](iter.getKey(), est, ub, lb)
rowList = append(rowList, row)
}
}
} else { //NO_FALSE_POSITIVES
for iter.next() {
est, err := i.GetEstimate(iter.getKey())
if err != nil {
return nil, err
}
ub, err := i.GetUpperBound(iter.getKey())
if err != nil {
return nil, err
}
lb, err := i.GetLowerBound(iter.getKey())
if err != nil {
return nil, err
}
if lb >= threshold {
row := newRowItem[C](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
}