Как из списка url (задан в файле) выбрать топ 10 использующихся

из списка url нужно выбрать топ 10 повторяющихся

    Scanner scanner = new Scanner(file);

    while (scanner.hasNextLine()) {
        System.out.println(scanner.nextLine());
    }
    scanner.close();
    return null;
}

введите сюда описание изображения

этот код выводит вот такой список часть списка url ссылок

из всего списка,он длинною в 1200 строк нужно выбрать топ 10 используемых. ума не приложу какими методами это сделать.


Ответы (1 шт):

Автор решения: Serodv
    // создаём вспомогательную мапу для подсчёта кол-ва url
    Map<String, Integer> urlCountMap = new HashMap<>();
    while (scanner.hasNextLine()) {
        // наполняем мапу: ключ - url, value - их количество 
        urlCountMap.merge(scanner.nextLine(), 1, Integer::sum);
    }
    
    // сортируем мапу по убыванию value и первые 10 Map.Entry 
    // помещаем в результирующую LinkedHashMap 

    LinkedHashMap<String, Integer> sortedMap = urlCountMap.entrySet()
            .stream()
            .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
            .limit(10)
            .collect(Collectors.toMap(Map.Entry::getKey,
                    Map.Entry::getValue,
                    (e1, e2) -> e2,
                    LinkedHashMap::new));
→ Ссылка