http://deitel.com/Books/Java/JavaHow...1/Default.aspx
I personally love the Deitel books. Unlike most books which tend to be written as references, the Deitel books are written as textbooks. They have sample problems and solutions at the end of each chapter.
Also what I like is that there aren't any code snippets. Every single code example is a complete functional program that can be keyed in and compiled.
When it comes to learning a new language I always look to see if there is a Deitel book on it first. After becoming comfortable with the language it's then time to pick up a good solid reference book.