В: Можете ли вы сделать проверку «более эффективно»?
A: Вы могли бы немного ее оптимизировать:
boolean nonEmptyColleges = false;
for (int key: Databases.tblColleges.keySet()) {
if (!Databases.getTblColleges(key).tblDepartments.isEmpty()) {
nonEmptyColleges = true;
break;
}
}
Вышеуказанные короткие замыкания, как только он обнаружит College
с Department
.Это будет существенным улучшением во многих случаях.
Затем, предполагая, что Databases.tblColleges
является Map
:
boolean nonEmptyColleges = false;
for (int college: Databases.tblColleges.values()) {
if (!college.tblDepartments.isEmpty()) {
nonEmptyColleges = true;
break;
}
}
Q: Можете ли вы сделать проверкус меньшим количеством кода?
A: Используя потоки Java 8, вы можете записать последний как:
boolean nonEmptyColleges = Databases.tblColleges.values().stream()
.anyMatch(c -> !c.tblDepartments.isEmpty());
(я думаю ...)
Q: Но этоправильный подход?
A: ИМО, нет.
Кажется, что вы собираетесь делать эту проверку каждый раз, когда добавляете мажор.Это не обязательно.
Майоры могут существовать только как атрибут Департамента.
Ключевым моментом, который вам нужно проверить, является наличие отдела, для которого вы хотите добавить мажор.
- Если Департамент не существует, вы не можете добавить к нему мажор.
- Если Департамент существует, вы можете получить мажор для него, независимо от того, существует он или нет.в настоящее время это факультет колледжа 1 .
Здесь важнее то, что любая модель данных будет иметь различные правила / ограничения целостности данных.Но это означает, что вам нужно явно проверять их все при каждом изменении модели.Вам нужно только проверить предварительные условия для изменения (например, наличие Департамента) и любые ограничения, которые могут быть признаны недействительными в результате изменения.
1 - в случае «не» предполагается, чтоможет быть какой-то другой способ найти Department
.Это может быть отдельная таблица из Department
объектов, или это может быть то, что вы находитесь в процессе создания и создания нового Department
и еще не добавили его в College
.