Eignet sich Java für Datenstrukturen und Algorithmen?
Ja. Neben Python wirkt Java wortreich, aber genau das hilft beim Lernen: Typen machen jeden Knoten, jede Referenz und jeden generischen Parameter explizit, und die Collections der Standardbibliothek entsprechen eins zu eins den Strukturen auf diesem Pfad. Java ist schnell genug für fast jeden Online-Judge und jedes Interview, und es ist die Sprache, die viele Uni-Kurse und Einstellungstests beim Campus-Recruiting verwenden.
Welche Java-Collections entsprechen welchen Datenstrukturen?
ArrayDeque ist ein Stack oder eine Queue, LinkedList eine doppelt verkettete Liste, HashMap und HashSet sind Hashtabellen, PriorityQueue ist ein binärer Min-Heap, und TreeMap und TreeSet sind Rot-Schwarz-Bäume, also balancierte binäre Suchbäume wie der AVL-Baum, den du in Schritt zwei baust. Eine Trie- oder Graph-Klasse gibt es nicht; die schreibst du selbst.
Sollte ich in Java Stack oder ArrayDeque verwenden?
ArrayDeque. Stack ist eine Legacy-Klasse, die Vector erweitert; deshalb ist jeder Aufruf synchronisiert, und sie erbt Listenmethoden, die ein Stack nicht haben sollte. Die Java-Dokumentation selbst empfiehlt stattdessen ein Deque. Interviewer bemerken das: Deque<Integer> stack = new ArrayDeque<>(); ist die idiomatische Zeile.
Java oder C++ für DSA?
Die Sprache, in der du Interviews führen oder an Wettbewerben teilnehmen wirst. C++ ist in der Wettbewerbsprogrammierung wegen seiner Geschwindigkeit und der STL der Standard; Java ist für Interviews genauso gut, und dank Garbage Collector musst du keinen Speicher von Hand verwalten, solange die Algorithmen noch neu sind. Die Ideen sind identisch, ein späterer Wechsel heißt also Syntax übersetzen, nicht neu lernen.
Welche Kurse auf diesem Pfad werden nicht in Java unterrichtet?
Drei: Dynamische Programmierung und die Python-Interviewreihe werden in Python unterrichtet, Bitmanipulation in C++. Sie sind nach den Schritten aufgeführt, jeweils mit einem Link, der den Kurs in seiner eigenen Sprache öffnet, und beide lesen sich aus Java-Sicht leicht: Eine Rekursionsgleichung ist in jeder Sprache gleich, und Java hat die bitweisen Operatoren von C++ plus den vorzeichenlosen Shift >>>.
Muss ich Java können, bevor ich mit diesem Pfad anfange?
Du solltest sicher mit Klassen, Methoden, Arrays und Schleifen umgehen können; Generics helfen, und die lernst du unterwegs. Wenn du noch nicht so weit bist, bringt dich Coddys Java-Kurs zuerst dorthin, kostenlos, und dieser Pfad setzt dort an, wo er endet.