спасибо всем за ваши усилия и желание помочь.Я новичок в программировании на Java и в данный момент работаю над своим окончательным проектом для курса.Я нашел решение, которое, на мой взгляд, очень, очень трудно понять, если вы находитесь на этом уровне.Это не мое решение, но оно работает.Сначала я заполнил hashmap значениями из файла, затем я проверил, существует ли это слово в файле, если true counter ++, если false counter = 1.После этого
public void dvadesetNajviseKoriscenih() throws Exception{
// this is where I populate hashmap with values
String line;
Integer counter = 0;
FileReader fr = new FileReader("src/Fajl/knjiga");
BufferedReader br = new BufferedReader(fr);
while ((line = br.readLine()) != null) {
String string[] = line.toLowerCase().split(" ");
for (String s : string) {
// this is where I check if the word already exists
if (hashmapName.containsKey(s)) {
counter++; //however this counter here is not right, so I will have to change it.
} else
counter = 1;
hashmapName.put(s, counter);
}
} //this below is where it sorts words by number of how many times it repeats...
Map<String, Integer> sorted = hashmapName.entrySet().stream().sorted(comparingByValue())
.collect(toMap(e -> e.getKey(), e -> e.getValue(), (e1, e2) -> e2, LinkedHashMap::new));
sorted = hashmapName.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.limit(20).collect(toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
for (String s : sorted.keySet()) {
System.out.println(s + " " + sorted.get(s));
}
}
Если кто-то знает, что происходит в нижней части кода, пожалуйста, не стесняйтесь объяснять нам, новичкам :) И, конечно, оцените мое решение :) Если кто-то хочет попрактиковаться вэту задачу, не стесняйтесь писать мне на github / BojanBosnjak