I recently had a discussion with a collegue why the List interface in Java doesn\'t have a head() and tail() method.
In order to implement
Java Collections Framework is written by Joshua Bloch. One of his API design principles is: High power-to-weight ratio.
tail() and head() can be implemented by get() and size(), so it's not necessary to add tail() and head() to a very general interface java.util.List. Once users use the methods, you don't have chance to remove them and you have to maintain these unnecessary methods forever. That's bad.