Максимальное количество повторяющихся элементов в массиве?
Если числа целые, неотрицательные и небольшие, то просто заведите второй массив, чтобы в нем считать, сколько раз каждое число встретилось. При увеличении счетчика сразу же проверяйте значение на максимум.
Как то так:maxval = -1;
maxcount=0;
for (i = 0; i < n; ++i) {
  ++counts[a[i]];
  if (counts[a[i]] > maxcount) {
    maxcount = counts[a[i]];
    maxval = a[i];
  }    
}
Если числа большие, то можно заменить массив counts[] на hash map.
Если ограничения по памяти серьезные, то придется отсортировать массив и в нем уже можно легко подсчитать сколько раз каждое число встречается.
Можно через Stream, но без промежуточного collect не обойтисьStream.of(1, 1, 1, 3, 4, 5, 6, 4, 3, 2, 1, 3, 4, 1, 2, 3, 1, 2)
    // Собрать в Map, где ключ - число из массива, значение - кол-во этих чисел в массиве
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
    // Отсортировать EntrySet по убыванию значений
    .entrySet()
    .stream()
    .sorted((e1, e2) -> Long.compare(e2.getValue(), e1.getValue()))
    // Взять первую (если есть) и вывести в консоль 
    .findFirst().ifPresent(e -> System.out.println(e.getKey() + " - " + e.getValue()));