An excellent book on complexity analysis, including the properties of popular and not very popular data structures, Introduction to Algorithms, second edition , also called CLRS. It is widely regarded as a bible of algorithms and their analysis.
For something more Java-oriented, my Java beginner course used this book and I found it to be adequate.
For mental exercises you can familiarize yourself with the practice. Try Project Euler , TopCoder or google acm practice issue . Perhaps this is what will give you the most tangible benefits in everyday encoding. Most of them will make and evaluate Java decisions (and C / C ++), so you are all set up in the language.
Matt j
source share