addAll, если коллекция не пуста - PullRequest
0 голосов
/ 17 июня 2020

Есть ли способ остановить addAll, если коллекция пуста? Я хочу добавить только

departments = new HashMap<>();

faculty.forEach(faculty-> {
List<String> facultyStaff = get list by some operation ;
    departments.computeIfAbsent(departmentKey, value -> new ArrayList<>())
               .addAll(facultyStaff);
}

Итак, в приведенном выше коде я хочу:

  1. создать запись в departments, если facultyStaff не пуст
  2. Добавьте facultyStaff, только если он не пустой

Потому что отделы будут использоваться дальше, и я хочу избежать исключения NullPointer, ArrayIndexOutOFBound там.

1 Ответ

0 голосов
/ 17 июня 2020

Предполагая, что DepartmentKey получен из объекта Faculty, мы можем переписать ваш logi c, используя Java 8 потоков.

final Map<String, List<String>> departments = faculty.stream()
                .map(fac -> new AbstractMap.SimpleEntry<>(fac.getDepartmentKey(), this.getFacultyStaff()))
                .filter(entry -> !entry.getValue().isEmpty())
                .collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
...