Acquire books one at a time as you find you need them. With the Internet and Google, there is much less need to buy books. I have a huge number of books and throw some very costly ones away from time to time simply because they are no longer technologically relevant.
You know when you learned to speak a new language, you probably started with a method to help you learn practical things like words and phrases. You also purchased a grammar that explained the language and became a reference tool on usage and how to structure things.
So it is with Java, I suggest:
The first is the book to start with; the second you could do without if you don't mind sorting through Google looking for "grammar" help.
Later, as you get more into Java, I suggest the following books. By suggesting them, I mean to say that I use Google a lot, so I wouldn't suggest these unless I thought they imparted knowledge and wisdom that make them worth acquiring instead of using Google. You can get a lot of advice on the Internet, but some is bad. The advice from these works is rock-solid.
As a believer in "test first, code after", I would also suggest these books. The first one is less theoretical and more practical; the second is more or less the Bible on the topic.
I'm a huge fan of O'Reilly's Head First series. For this reason, I have a lot of them. One of my very favorite was Head First Design Patterns. It rocks.