Data structures and Algorithms in Java