Ответ 1
Я полагаю, что вопрос ОП заключается в следующем: почему существуют дублированные методы, учитывая, что empty()
и isEmpty()
делают одно и то же?
Если вы посмотрите поближе, в Vector
, Stack
и HashTable
, есть больше примеров методов, выполняющих похожие вещи с разными именами.
Вот краткая история:
На момент выпуска JDK 1.0 в Java не было фреймворка "Коллекция". Stack
, Vector
, HashTable
были одними из основных структур данных, предоставляемых Java.
Позднее, в JDK 1.2, в JDK была добавлена платформа Collection, и были представлены стандартные интерфейсы (такие как List
, Map
).
Однако в этих новых стандартных интерфейсах коллекции методы были названы в другом соглашении. Изменение соглашения об именах, скорее всего, зависело от стандарта Java Bean, введенного также в JDK 1.2. Эти имена методов отличались от названий в старых классах Stack
, Vector
и HashTable
. Например, он был назван empty()
в исходном классе, но получил имя isEmpty()
интерфейса Collection
.
Чтобы сделать Stack
, Vector
и HashTable
совместимыми с платформой Collection, Stack
, Vector
и HashTable
реализовали соответствующие интерфейсы Collection. В то же время старые методы были сохранены ради обратной совместимости.
Отсюда и "дублированные" методы, которые вы видите сейчас.