This is an old revision of the document!
Το interface List υλοποιεί μία διπλά διασυνδεδεμένη λίστα. Η βασικές διαφορές σε σχέση με το Set interface είναι ότι ένα αντικείμενο μπορεί να εμφανίζεται περισσότερες από μία φορές μέσα στη λίστα. Επίσης η σειρά των αντικειμένων στη λίστα διατηρείται και είναι η σειρά με την οποία εισήχθησαν (όλα τα νέα αντικείμενα εισάγονται στο τέλος της λίστας). Μπορείτε να σκεφτείτε την λίστα σαν ένα πίνακα, όπου έχετε πρόσβαση στο i-στο στοιχείο του.
Το interface List ορίζει τις εξής επιπλέον μεθόδους σε σχέση με το interface Collection.
for (ListIterator<Type> it = list.listIterator(list.size()); it.hasPrevious(); ) { Type t = it.previous(); ... }
Υπάρχουν δύο βασικές κλάσεις που υλοποιούν το συγκεκριμένο interface, ArrayList και LinkedList. Κάθε μία υλοποίηση έχει θετικά και αρνητικά σημεία. Συνήθως χρησιμοποιούμε την ArrayList, παρακάτω γίνεται σύντομη απαρίθμηση των θετικών και αρνητικών στοιχείων των δύο υλοποιήσεων.
Το παράδειγμα που ακολουθεί διαβάζει από ένα αρχείο κειμένου μια σειρά από λέξεις με τη βοήθεια της κλάσης java.util.Scanner. Τα γράμματα κάθε λέξης μετατρέπονται σε πεζά πριν αποθηκευτούν στη λίστα.
import java.util.*; import java.io.*; public class ListExample { public static void main(String []args) { List<String> wordsList = new ArrayList<>(); try(Scanner sc = new Scanner(new File(args[0]))) { while(sc.hasNext()) { String word = sc.next().toLowerCase(); wordsList.add(word); } Iterator it = wordsList.iterator(); while(it.hasNext()) System.out.print(it.next()+" "); System.out.println(""); } catch(FileNotFoundException ex) { System.out.println("Unable to open file \""+args[0]+"\""); } } }
Μια παραλλαγή του παραπάνω κώδικα είναι
add να χρησιμοποιήσετε ένα ListIterator προκειμένου να βάλετε τα στοιχεία στη λίσταimport java.util.*; import java.io.*; public class ListExample { public static void main(String []args) { List<String> wordsList = new ArrayList<>(); try(Scanner sc = new Scanner(new File(args[0]))) { ListIterator<String> it = wordsList.listIterator(); while(sc.hasNext()) { String word = sc.next().toLowerCase(); it.add(word); } it = wordsList.listIterator(wordsList.size()-1); while(it.hasPrev()) System.out.print(it.prev()+" "); System.out.println(""); } catch(FileNotFoundException ex) { System.out.println("Unable to open file \""+args[0]+"\""); } } }
| Προηγούμενο: Interface java.util.Set | Περιεχόμενα | Επόμενο: Interface java.util.Map |