Oii, Gustavo.
Um desenvolvedor não precisa saber reimplementar todas as estruturas de dados do zero para ser bom no que faz. O essencial é entender como elas funcionam conceitualmente, ou seja, ter uma noção clara de como armazenam, organizam e acessam os dados. Isso é o que realmente vai permitir que você escolha a estrutura mais adequada para cada situação.
Por exemplo, se você entende que um ArrayList é mais rápido para acessar elementos, mas mais lento para inserções no meio da lista, enquanto uma LinkedList tem o comportamento oposto, já está dominando o que importa para o dia a dia. Esse tipo de conhecimento prático é o que diferencia um código eficiente de um código que apenas “funciona”.
Saber criar uma estrutura de dados do zero, como uma pilha, uma fila ou uma árvore binária, é algo que se torna útil em contextos mais específicos: entrevistas técnicas, estudos acadêmicos ou projetos que exigem otimização profunda. Mas, na maioria dos casos, as bibliotecas padrão do Java já trazem implementações muito bem otimizadas, e o mais importante é saber usá-las corretamente.
Então, conhecer a fundo significa compreender como e por que cada estrutura se comporta de determinada forma, não necessariamente saber escrevê-la linha por linha. Se você já leu sobre as principais estruturas e entendeu a lógica de cada uma, está no caminho certo. Com o tempo e a prática, esse entendimento se aprofunda naturalmente.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!