Я вижу этот фрагмент кода в своей работе. Я не могу получить правильное представление о том, что здесь происходит. Я пытался использовать отладчик для получения значений, но отладчик здесь не помогает.Java 8 потоковый API с использованием карты
public static void process (ErrorCat exc, String toFind) {
Map<String, Function<Error, Error>> translate = new HashMap<>();
translate.put("foo", new classThatimplementsFunction());
translate.put("bar", new classThatimplementsFunction())
List<Error> Errors = Lists.newArrayList();
List<Error> retErrors = Lists.newArrayList();
retErrors.addAll(exc.getErrors());
translate.keySet()
.stream()
.filter(k->toFind.contains(k))
.forEach(key->exc.getErrors() // from here I dont follow
.stream()
.forEach(e->{retErrors.remove(e); Errors.add(translate.get(key).apply(e));}));
Я прокомментировал выше, где я начинаю испытывать трудности. является вторым ForEach
, выполненным для каждого key
, который отфильтровывается. Если это так, то retErrors.remove(e);
во время второй итерации ключа не будет иметь эффекта (поскольку retErrors будет пустым после первой итерации)
Не могли бы вы попросить человека, написавшего этот фрагмент кода? У вас будет, конечно, лучшее объяснение. –
Я хочу, чтобы этот человек продолжал работать ... –
О, это довольно неудачно, поэтому .. Вот почему вы должны прокомментировать свой код. –