我最近和一个同事讨论了为什么Java中的List接口没有head()和tail()方法。
为了实现这样的功能,我们需要编写一个类似下面这样的包装器:
我对所有的List实现都不太了解,但我认为至少在LinkedList和ArrayList中,获取最后和第一个元素应该是非常简单的(常数时间)。
所以问题是:
是否有特定的原因,不建议为任何List实现提供一个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实现提供一个tail方法?
Deque
жО•еП£дЄ≠ињШжЬЙgetFirst()
еТМgetLast()
жЦєж≥ХгАВ - michael667tail
函数应该返回列表中除了头部以外的元素。这是任何函数式语言都会返回的结果。 - Renato