Joshua Bloch's Effective Java Programming 2nd Edition - http://java.sun.com/docs/books/effective/
I only have the 1st edition, but its an absolute must have if you want to be a good java dev/programmer, it basically provides a set of rules on how things should be done in have, e.g. if you override .equals you must override the hashcode etc.
He wrote the Java Collections framework in the JDK so that should say it all really.






