Как указать любой другой метод вывода, кроме .forEach(System.out::println)?
Я считываю байты из файла и добавляю их в map. Мне нужно вывести первые 3 значения, но я не знаю как это указать в последних строках кода, кроме как .forEach(System.out::println). В коде есть комментарий где именно мне нужно указать конкретное число итераций для вывода. Буду благодарен всем за помощь!
package com.javarush.task.task18.task1803;
/*
Самые частые байты
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fileInputStream = new FileInputStream(bf.readLine());
int count = fileInputStream.available();
int[] b = new int[count];
int index = 0;
while (fileInputStream.available() > 0) {
b[index++] = fileInputStream.read();
}
/*for (int i = 0; i < b.length; i++) {
System.out.println(b[i] + " ");
}*/
Map<Integer, Integer> map = new HashMap<>();
int counter = 1;
int current = 0;
for (int i = 0; i < b.length; i++) {
current = b[i];
for (int j = 0; j < i; j++) {
if (current == b[j]) {
counter++;
}
}
map.put(current, counter);
counter = 1;
}
map.entrySet().stream().sorted(Map.Entry.<Integer, Integer>comparingByValue().reversed()).forEach(System.out::println); // тут
}
}
Ответы (1 шт):
В общем случае в методе forEach объявляется переменная, которая на каждой итерации будет принимать значение элемента коллекции, и далее указываются действия с ним.
Пример:
.forEach(element -> {
System.out.println(element);
});
Такую запись можно сократить до:
.forEach(System.out::println);
В вашем случае, например, можно в этом же классе Solution создать дополнительный метод, принимающий на вход объект коллекции:
private static void sout(Map.Entry<Integer, Integer> i) {
System.out.println(i);
}
и вызывать его:
.forEach(Solution::sout);
В общем случае метод может быть таким:
private static void method(Object object) {
System.out.println(object);
// или любые другие действия, на ваше усмотрение..
}