Οι λίστες είναι η διατεταγμένη συλλογή ακολουθίας στη Java.
Σε αντίθεση με τους πίνακες, μια List μπορεί να μεγαλώσει σε μέγεθος ώστε να χωρέσει οποιονδήποτε αριθμό στοιχείων.
Μια τυπική υλοποίηση είναι η ArrayList, η οποία βασίζεται σε έναν πίνακα μεταβλητού μεγέθους.
Μια άλλη τυπική υλοποίηση είναι η κλάση LinkedList, η οποία βασίζεται σε μια διπλά συνδεδεμένη λίστα.
Οι List μπορούν να είναι κενές ή να περιέχουν οποιονδήποτε αριθμό στοιχείων (συμπεριλαμβανομένων των διπλότυπων).
Οι List είναι γενικές διεπαφές που τυποποιούνται ώστε να δείχνουν ποιου τύπου αντικείμενα μπορούν να περιέχουν.
Για παράδειγμα:
List<String> emptyListOfStrings = List.of();
List<Integer> singleInteger = List.of(1);
List<Boolean> threeBooleans = List.of(true, false, true);
List<Object> listWithMultipleTypes = List.of("hello", 1, true);
Οι List έχουν διάφορες χρήσιμες μεθόδους για να προσθέτεις, να αφαιρείς, να παίρνεις και να ελέγχεις αν υπάρχει ένα στοιχείο:
List<Character> vowels = new ArrayList<>(List.of('a', 'e', 'i', 'o', 'i', 'e', 'a'));
int startingSize = vowels.size(); // 7
vowels.add('u'); // vowels is now ['a', 'e', 'i', 'o', 'i', 'e', 'a', 'u']
char a = vowels.get(0); // 'a'
boolean hadI = vowels.remove('i'); // true and vowels is now ['a', 'e', 'o', 'i', 'e', 'a', 'u']
boolean hasI = vowels.contains('i'); // true (still have one more left)
Η κλάση Collections έχει επίσης κάποιες χρήσιμες βοηθητικές μεθόδους για τον χειρισμό συλλογών όπως η List:
List<Integer> numbers = new ArrayList<>(List.of(1, 5, 3, 2, 4));
Collections.sort(numbers); // [1, 2, 3, 4, 5]
Collections.reverse(numbers); // [5, 4, 3, 2, 1]
Collections.fill(numbers, 42); // [42, 42, 42, 42, 42]
List<Integer> fiveNines = Collections.nCopies(5, 9); // [9, 9, 9, 9, 9]