I want to be good in Data Structures and Analysis esp. in Java. I often find myself very weak. What should I do to be good in it? Any good mental exercises?
For the analysis of the data structures, you need to study discrete mathematics (combinatorics) and statistics.
An excellent book on complexity analysis, including the properties of popular and not-so-popular data structures, is Introduction to Algorithms, Second Edition, also referred to as CLRS. It's widely considered to be the bible of algorithms and their analysis.
For something more Java-centric, my undergraduate intro Java course used this book, and I found it to be adequate.
For mental exercises, you might familiarize yourself through practice. Try Project Euler, TopCoder, or google "acm practice problem". This is perhaps the thing that will give you the most tangible benefits in everyday coding. Most all of these will accept and evaluate Java (and C/C++) solutions, so you're all set on the language front.
Normally I would recommend CLRS, but since you specifically called out Java in your question, I recommend Objects, Abstraction, Data Structures and Design: Using Java version 5.0. It has really fantastic explanations of data structures and the algorithms that make them work.
Algorithms in Java, by R. Sedgewick is a very good book on algorithms, with java implementations.