Data structures and algorithms on Java