Java implementations of basic algorithms and data structures