Czy Java nadaje się do nauki algorytmów i struktur danych?
Tak. W porównaniu z Pythonem jest rozwlekła, ale podczas nauki ta rozwlekłość pomaga: typy sprawiają, że każdy węzeł, referencja i parametr generyczny są jawne, a kolekcje z biblioteki standardowej odpowiadają jeden do jednego strukturom z tej ścieżki. Jest wystarczająco szybka dla prawie każdej sprawdzarki i rozmowy, a wiele uczelni i firm rekrutujących absolwentów używa właśnie jej.
Które kolekcje Javy odpowiadają którym strukturom danych?
ArrayDeque to stos albo kolejka, LinkedList to lista dwukierunkowa, HashMap i HashSet to tablice mieszające, PriorityQueue to binarny kopiec minimalny, a TreeMap i TreeSet to drzewa czerwono-czarne, czyli zrównoważone drzewa BST jak drzewo AVL budowane w kroku drugim. Nie ma klasy dla drzewa trie ani grafu, te trzeba napisać samodzielnie.
Stack czy ArrayDeque w Javie?
ArrayDeque. Stack to przestarzała klasa rozszerzająca Vector, więc każde wywołanie jest synchronizowane, a do tego dziedziczy metody listy, których stos nie powinien mieć. Sama dokumentacja Javy zaleca zamiast niej Deque. Rekruterzy to zauważają: Deque<Integer> stack = new ArrayDeque<>(); to idiomatyczna linijka.
Java czy C++ do algorytmów i struktur danych?
Ten język, w którym będziesz mieć rozmowę albo startować w zawodach. C++ to norma w programowaniu sportowym ze względu na szybkość i STL. Java jest równie dobra na rozmowy, a jej garbage collector zwalnia cię z ręcznego zarządzania pamięcią, dopóki algorytmy są jeszcze nowe. Idee są identyczne, więc późniejsza zmiana to tłumaczenie składni, a nie nauka od nowa.
Które kursy z tej ścieżki nie są prowadzone w Javie?
Trzy: programowanie dynamiczne i seria rekrutacyjna w Pythonie są prowadzone w Pythonie, a operacje na bitach w C++. Są wymienione po krokach, każdy z linkiem, który otwiera go w jego własnym języku, i oba języki łatwo czytać z perspektywy Javy: zależność rekurencyjna wygląda tak samo w każdym języku, a Java ma operatory bitowe z C++ plus przesunięcie bez znaku >>>.
Czy muszę znać Javę, zanim zacznę tę ścieżkę?
Klasy, metody, tablice i pętle nie powinny sprawiać ci trudności. Typy generyczne pomagają, a poznasz je po drodze. Jeśli jeszcze nie jesteś na tym etapie, kurs Javy w Coddy najpierw cię tam doprowadzi, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.