func()

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
}