public Comparable find(Comparable x) {
return x == null ? null : elementAt(find(x, root));
}
к вашему сведению это эквивалентно:
public Comparable find(Comparable x) {
if (x == null) return null;
return elementAt(find(x, root));
}
Вы также можете улучшить ясность своего кода: у вас есть вызов метода и тест, объединенные. Хотя само по себе это не «плохо», ИМХО было бы чётче разделить два, И получить значение, возвращаемое в случае, если вы хотите что-то с ним сделать, например:
for (Comparable<?> result = tree.find(indexreg); result != null; result = tree.find(indexreg)) {
//do stuff with variable "result"
}
Это просто делает более очевидным, что контролирует цикл.
Есть другой способ получить результат, но он считается "плохим стилем кодирования"; то есть назначить и проверить в одном:
Comparable<?> result;
while ((result = tree.find(indexreg)) != null) {
//do stuff with variable "result"
}
Некоторые считают, что вам следует избегать такого стиля кодирования. Я склонен с ними согласиться.