Obie są elementami frameworku Collections (wbudowanego w Javę).
- ArrayList to tablica dynamiczna (wstawianie jest szybkie pod warunkiem, że nie trzeba ponownie tworzyć tablicy), pobieranie wartości jest zawsze w czasie stałym.
- LinkedList to lista składająca się z elementów, które posiadają referencje do następnych elementów. Wstawianie jest operacją o złożoności liniowej, jak również pobieranie.
Raczej najlepszym pomysłem będzie testowanie na dużych zestawach danych przy dodawaniu elementów, pobieraniu usuwaniu itp, wraz z liczeniem czasu każdej operacji. W ten sposób sam dostrzeżesz kiedy warto użyć jeden, a kiedy durgi. Częściej spotkasz się z ArrayList niż z LinkedList.
Jeśli nie wiesz jaki typ coś reprezentuje warto użyć metody getClass() zdefiniowanej w klasie Object (czyli dostępnej dla wszystkich typów oprócz typów prymitywnych). Z obiektu klasy możemy pobrać nazwę, metody, pola, klasę nadrzędną, interfejsy, adnotacje...
String nazwaKlasy = obiekt.getClass().getName(); // obiekt zamien na nazwę obiektu w kodzie
Kod jest napisany po polsku by każdy go zrozumiał. Nie róbcie tego w domu, pracy, szkole ;)