¿Es Java bueno para estructuras de datos y algoritmos?
Sí. Es verboso al lado de Python, pero esa verbosidad ayuda mientras aprendes: los tipos hacen explícitos cada nodo, cada referencia y cada parámetro genérico, y las colecciones de la biblioteca estándar se corresponden una a una con las estructuras de esta ruta. Es lo bastante rápido para casi cualquier juez en línea y cualquier entrevista, y es el lenguaje que usan muchos cursos universitarios y procesos de reclutamiento en campus.
¿Qué colecciones de Java corresponden a qué estructuras de datos?
ArrayDeque es una pila o una cola, LinkedList es una lista doblemente enlazada, HashMap y HashSet son tablas hash, PriorityQueue es un min-heap binario, y TreeMap y TreeSet son árboles rojo-negro, un tipo de árbol binario de búsqueda balanceado como el árbol AVL que construyes en el paso dos. No hay ninguna clase de trie ni de grafo; esos los escribes tú.
¿Debo usar Stack o ArrayDeque en Java?
ArrayDeque. Stack es una clase antigua que extiende Vector, así que cada llamada está sincronizada y hereda métodos de lista que una pila no debería tener; la propia documentación de Java recomienda usar un Deque en su lugar. Los entrevistadores se fijan: Deque<Integer> stack = new ArrayDeque<>(); es la línea idiomática.
¿Java o C++ para DSA?
Aquel en el que vayas a hacer entrevistas o a competir. C++ es la norma en la programación competitiva por su velocidad y la STL; Java es igual de bueno para entrevistas, y su recolector de basura te ahorra gestionar la memoria a mano mientras los algoritmos aún son nuevos para ti. Las ideas son idénticas, así que cambiar más adelante es traducir sintaxis, no volver a aprender.
¿Qué cursos de esta ruta no se enseñan en Java?
Tres: la programación dinámica y la serie de entrevistas en Python se enseñan en Python, y la manipulación de bits en C++. Aparecen después de los pasos, cada uno con un enlace que lo abre en su propio lenguaje, y ambos temas se siguen con facilidad desde Java: una recurrencia es igual en cualquier lenguaje, y Java tiene los operadores bit a bit de C++ más el desplazamiento sin signo >>>.
¿Necesito saber Java antes de empezar esta ruta?
Deberías manejarte con clases, métodos, arrays y bucles; los genéricos ayudan, y los irás aprendiendo por el camino. Si aún no llegas a ese nivel, el curso de Java de Coddy te lleva hasta ahí primero, gratis, y esta ruta continúa donde él termina.