Задачу решил, но код совсем не нравится, особенно два цикла в цикла, чувствую, что можно использовать только один (или вообще обойтись просто одним циклом без вложенного). Подскажите как это можно сделать? Есть ли какие-либо еще уже написанные методы в java?
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fileInputStream = new FileInputStream(bufferedReader.readLine());
List<Integer> list = new ArrayList<>(100);
List<Integer> list1 = new ArrayList<>(100);
while (fileInputStream.available() > 0) {
int p = fileInputStream.read();
if (list.contains(p) && !list1.contains(p)) {
list1.add(p);
}
list.add(p);
}
bufferedReader.close();
fileInputStream.close();
int n = 0;
int max = Integer.MIN_VALUE;
for (int i = 0; i < list1.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if (list1.get(i).equals(list.get(j))) {
n++;
}
}
if (n > max) {
max = n;
}
n = 0;
}
int k = 0;
for (int i = 0; i < list1.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if (list1.get(i).equals(list.get(j))) {
k++;
}
}
if (k == max){
System.out.print(list1.get(i) + " ");
}
k = 0;
}
}
}