The author of this book has a solid background in the primary subject matter (data structures) of this book. Unlike many academics, he actually takes time to understand the tools used to translate his academic knowledge into program components. If you have learnt the fundamentals of Java and now want to study how Java can be used to provide some of the more fundamental components used by programs (things like linked lists, priority queues and the like) then this is an excellent text for study.
There is no point in buying this text as some form of reference or cookbook; that isn't what the author is seeking to achieve. He is more focused on the trade-offs involved in alternative ways of implementing components. For example there are many ways to implement a priority queue. Doing so with an array may not appear to be a good idea but appearances can be deceptive.
This is a book for the thoughtful user of Java who would like to do a bit more than just copy out someone else's code for data structures. In other words it achieves exactly what it sets out to do, to take the student who has successfully completed a first course on computer science through the second course. If you must use Java for your academic computer science courses then this book is an excellent basis for your second course.