Practice implementations of some common data structures and algorithms in java