2
respostas

Duvida sobre Collectors.counting()

Path caminho = Paths.get(System.getProperty("user.dir"), "log.txt");

Files.lines(caminho, StandardCharsets.ISO_8859_1) .map(linha -> { return getUrl(linha); }) .filter(url -> url != null) .collect( Collectors.groupingBy(Arquivo::getUrl, LinkedHashMap::new, Collectors.counting())

) .entrySet().stream() .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) .limit(3). forEach( s -> System.out.println(s));

gostaria de saber se é possível aproveitar e tbm contar o outro atributo da classe, o statuscode, sem te que ler o arquivo novamente.

2 respostas

Vc pode reaproveitar o retorno do map ou do filter :).

Meu caro, Alberto,obrigado pela participação. Eu gostaria de fazer isso aqui sem ter que ler o stream novamente. é possível? poderia dar um exemplo?

.collect( Collectors.groupingBy(Arquivo::getUrl, LinkedHashMap::new, Collectors.counting() ),

Collectors.groupingBy(Arquivo::getStatusCode, LinkedHashMap::new, Collectors.counting()));