Computing Data Structures Using Java