Java implementation of various algorithms and data structures