private void compute() { long max = 0; Iterator<String> concat = summary.distinct // ? freqNames(summary.frequencyDist) // category names, null values and distinct values : Iterators.concat( categoryNames(), ImmutableList.of(NULL_NAME).iterator()); // category names and null values // Iterate over all category names including or not distinct values. // The loop will also determine the mode of the distribution (most frequent value) while (concat.hasNext()) { String value = concat.next(); long count = summary.frequencyDist.getCount(value); if (count > max) { max = count; summary.mode = value; } summary.frequencies.add( new Frequency( value, summary.frequencyDist.getCount(value), summary.frequencyDist.getPct(value))); } summary.n = summary.frequencyDist.getSumFreq(); }