Начал изучать Java недавно, но все же вот мои 5 копеек.
Собственно, тут даже и от языка программирования не зависит особо: классические структуры и алгоритмы как бы должен знать любой программист: списки, очереди, множества, хэш-массивы и т.п. К алгоритмам же относятся: различные сортировки, поиск и т.п.
Конкретно в Java:
Thinking In Java, глава 11
Но, конечно, более каноничный труд по структурам, а особенно по алгоритмам — это «Искусство программирования» Кнута