Data Abstraction and Design Using Java, 3rd Edition , combines a strong emphasis on problem solving and software design with the study of data structures. The authors discuss applications of each data structure to motivate its study. After providing the specification (interface) and the implementation (a Java class), case studies that use the data structure to solve a significant problem are introduced.
This is a must read for for new developers. It introduces the concepts and various implementations of classic data structures and sorting algorithms which build the foundations for a deeper understanding of the world of software development.
Very rudimentary. It shows basic uses of some data structures with Java, but not much more than that. Personally, I'd read a book on Java and one on data structures and complexity separately.