I have this book called Data Structures & Algorithms in Java by Michael T. Goodrich and Roberto Tamassia. It's kind of good, but not very good.
Each chapter in the book has a hell lot of exercises ( reinforcements, creativity problems, and mini projects ). There are so many exercises that you need at least 3-4 days to complete the exercises only.
The first few exercises are easy, then there are intermediate level questions, and then there are advanced level questions in each chapter. I mean this book is good if you have a study partner.
Otherwise it gets really boring because advancing to the next chapter is difficult. The publishers' website has only one line hints for the exercises, so you really might need to spend time with the problems. So getting to the interesting topics may need a lot of time if you really wanna do it properly - step wise.
As for me, I don't like to skip beginner stuff ( arrays, sequences, bit manipulations ). It makes me feel like something is incomplete and I don't like incomplete things. So I am still where I was two months back - Chapter 3- Arrays, LinkedList, and Recursion. I have studied the chapter. But now there are 16 reinforcements, 24 creativity problems, and 9 mini projects to be done.
I can't wait to get to those beautiful BFS and DFS searches, and those Red Black Trees our TreeSet is based on. But who will do the exercises. :-)
Another thing is the Collections Framework in Java which the book does not cover in good detail. This book covers raw data structures mostly - you'd create your own stacks, your own lists, your own sequences, search logics, trees, graphs, and what nots. There are very few examples based on the actual Collection Framework classes.
Also when you see the rest of the world talking about the implementation details of an ArrayList or say a TreeMap - those hasing/ rehashing stuff, you wanna do that too. So it's like - you need a lot of time to cover first the raw data structures and along with that look into Collection Framework classes and interfaces ( which again is kind of vast ).
And the thing about interviews is this - you really don't know what they're gonna ask. At some places it works to know just the raw data structures and the interviewers are wise to make a judgement based on your ability to work with the raw data structures. But there are some other places where they want to see not only your algorithm skills, but also how comfortable you are using the Collection Framework classes- I mean they even ask which Class has which method and what it returns.
So the summary is- if you are looking for raw data structures and a hell lot of exercises, you can go for this book. For the raw data structures, it's kind of good, I feel.
Oh yea, I had to order the book and it was delivered after 15 days!