Предполагая, что chart
является Map
и computeIfPresent является методом, который принимает key
и BiFunction
в качестве аргумента
default V computeIfPresent(K key,
BiFunction<? super K,? super V,? extends V> remappingFunction)
Если значение дляуказанный ключ присутствует и не равен нулю, пытается вычислить новое сопоставление, учитывая ключ и его текущее сопоставленное значение.
Таким образом, этот метод используется для вычисления нового значения для существующего ключа в картепоэтому BuFunction
принимает key,oldvalue
в качестве аргументов, а возвращаемое значение будет новым вычисленным значением для этого ключа
Пример:
Map<String, String> map = new HashMap<String, String>();
map.put("10", "Deadpool");
System.out.println(map); //{10=Deadpool}
Теперь вычисляем новоезначение для ключа 10
с использованием computeIfPresent
map.computeIfPresent("10", (key,oldVal)->"Iron Man");
System.out.println(map); // {10=Iron Man}
Таким образом, в вашем коде вы должны вернуть новое значение, которое необходимо связать с ключом
Files.lines(Paths.get("src/main/files/end.log")).forEach( (p) ->
chart.computeIfPresent(p.substring(0,2), (k, v) -> {
try {
v.setEndTime(p.substring(3));
} catch (ParseException e) {
e.printStackTrace();
}
//return value for key p.substring(0,2)
}));