Это очень открытый вопрос, поэтому краткий и полезный ответ труден.Я бы сказал, что вам нужно знать хотя бы структуры данных и связанные алгоритмы, которые Java предоставляет в стандартных библиотеках, чтобы вы знали, как и когда использовать каждую из них.Если вы не знаете различий в структуре и производительности между ArrayList и LinkedList, вы не будете знать, когда каждый из них подходит.Точно так же, если вы не знаете, как работает HashMap, вы не можете знать, как правильно определить классы, которые могут храниться в одном.
Также поучительно изучить несколько различных алгоритмов сортировки и поиска по тем же причинам.