Недавно я обсуждал с коллегой, почему интерфейс List в Java не имеет метода head()
и tail()
.
Чтобы реализовать такую функциональность, нужно написать оболочку, которая выглядит примерно так:
public E head() {
if (underlyingList == null || underlyingList.isEmpty())
return null;
return underlyingList.get(0);
}
public E tail() {
if (underlyingList == null || underlyingList.isEmpty())
return null;
return underlyingList.get(underlyingList.size()-1);
}
Мне не известны все реализации List, но я предполагаю, что по крайней мере в LinkedList и ArrayList должно быть довольно тривиально получить последний и первый элемент (постоянное время).
Итак, вопрос:
Есть ли какая-то конкретная причина, почему не рекомендуется использовать хвостовой метод для любой реализации List?