Java va bene per algoritmi e strutture dati?
Sì. È prolisso rispetto a Python, ma la prolissità aiuta mentre impari: i tipi rendono espliciti ogni nodo, riferimento e parametro generico, e le collezioni della libreria standard corrispondono una a una alle strutture di questo percorso. È abbastanza veloce per quasi ogni giudice online e colloquio, ed è il linguaggio usato da molti corsi universitari e test di selezione.
Quali collezioni di Java corrispondono a quali strutture dati?
ArrayDeque è una pila o una coda, LinkedList è una lista doppiamente concatenata, HashMap e HashSet sono tabelle hash, PriorityQueue è un min-heap binario, e TreeMap e TreeSet sono alberi rosso-neri, alberi binari di ricerca bilanciati come l'albero AVL che costruisci nel secondo passaggio. Non esiste una classe per trie o grafi; quelli li scrivi tu.
In Java meglio Stack o ArrayDeque?
ArrayDeque. Stack è una classe legacy che estende Vector, quindi ogni chiamata è sincronizzata ed eredita metodi da lista che una pila non dovrebbe avere; la stessa documentazione di Java raccomanda invece un Deque. Chi fa i colloqui ci fa caso: Deque<Integer> stack = new ArrayDeque<>(); è la riga idiomatica.
Java o C++ per algoritmi e strutture dati?
Quello con cui sosterrai i colloqui o farai le gare. Il C++ è la norma nella programmazione competitiva per la sua velocità e la STL; Java va altrettanto bene per i colloqui, e il suo garbage collector ti evita la gestione manuale della memoria mentre gli algoritmi sono ancora nuovi. Le idee sono identiche, quindi cambiare in seguito significa tradurre la sintassi, non reimparare.
Quali corsi di questo percorso non sono insegnati in Java?
Tre: la programmazione dinamica e la serie di colloqui in Python sono insegnate in Python, e la manipolazione dei bit in C++. Sono elencati dopo i passaggi, ognuno con un link che lo apre nel suo linguaggio, ed entrambi si leggono facilmente da Java: una ricorrenza è la stessa in qualsiasi linguaggio, e Java ha gli operatori bit a bit del C++ più lo shift senza segno >>>.
Devo conoscere Java prima di iniziare questo percorso?
Dovresti trovarti a tuo agio con classi, metodi, array e cicli; i generics aiutano, e li imparerai strada facendo. Se non sei ancora a quel punto, il corso di Java di Coddy ti ci porta prima, gratis, e questo percorso riprende da dove finisce.