var s = Arrays.asList("a", "a", "a", "b", "b", "b", "c");
var map = s.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
var max = map.entrySet().stream()
.max(Map.Entry.comparingByValue())
.map(Map.Entry::getValue)
.orElse(0L);
var result = map.entrySet().stream()
.filter(e -> e.getValue().equals(max))
.map(Map.Entry::getKey)
.collect(Collectors.toList()); // [a, b]