This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
java:array_list [2016/03/19 07:22] gthanos [Παράδειγμα 2] |
java:array_list [2018/03/15 14:49] (current) gthanos [Παράδειγμα 1] |
||
---|---|---|---|
Line 40: | Line 40: | ||
* ''boolean hasNext()'' : Επιστρέφει true εάν υπάρχει τουλάχιστον ένα επιπλέον αντικείμενο αποθηκευμένο στη δομή σε σχέση με την τρέχουσα θέση του //Iterator//. | * ''boolean hasNext()'' : Επιστρέφει true εάν υπάρχει τουλάχιστον ένα επιπλέον αντικείμενο αποθηκευμένο στη δομή σε σχέση με την τρέχουσα θέση του //Iterator//. | ||
* ''E next()'' : Επιστρέφει το νέο αντικείμενο εφόσον υπάρχει. | * ''E next()'' : Επιστρέφει το νέο αντικείμενο εφόσον υπάρχει. | ||
- | * ''void remove()'' : Διαγράφει το αντικείμενο που βρίσκεται στη τρέχουσα θέση του //Iterator// από την δομή. | + | * ''void remove()'' : Διαγράφει το αντικείμενο που βρίσκεται στη τρέχουσα θέση του //Iterator// από την δομή. **ΠΡΟΣΟΧΗ**: Ο μόνος ασφαλής τρόπος αφαίρεσης στοιχείου από ArrayList κατά τη διάρκεια διάτρεξης του ΑrrayList είναι με χρήση //Iterator//. |
===== Παράδειγμα 1 ===== | ===== Παράδειγμα 1 ===== | ||
- | Με βάση τα παραπάνω ας προσπαθήσουμε να ξαναγράψουμε το πρόγραμμα που δημιουργεί τον τηλεφωνικό κατάλογο, ώστε να αποθηκεύσουμε τα στοιχεία όχι σε ένα πίνακα 5 θέσεων, αλλά σε ένα αντικείμενο ArrayList. Στη συνέχεια θα προσπαθήσουμε να διατρέξουμε τα στοιχεία με χρήση ενός //Iterator//. | + | Με βάση τα παραπάνω παραθέτουμε ένα πρόγραμμα το οποίο διαβάζει από το πληκτρολόγιο μία σειρά από 10 αλφαριθμητικά και τα αποθηκεύει σε ένα [[http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html|ArrayList]]. Το πρόγραμμα παραθέτει τρεις (3) διαφορετικές μεθόδους για την διάτρεξη της λίστας //α)// με χρήση κλασσικού //for// //β)// με χρήση //[[java:loop_statements#for_statement|enhanced for]]// και //γ)// με χρήση //iterator//. Το πρόγραμμα κάνει τα εξής: |
- | <code java ReadLineByLine.java> | + | - εκτυπώνει τη λίστα με χρήση της πρώτης μεθόδου διάτρεξης. |
- | import java.io.*; | + | - ταξινομεί τη λίστα με χρήση της στατικής μεθόδου [[http://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#sort-java.util.List-|Collections.sort]]. |
- | import java.util.ArrayList; | + | - εκτυπώνει τη λίστα με χρήση της δεύτερης μεθόδου διάτρεξης. |
- | import java.util.Iterator; | + | - εκτυπώνει τη λίστα με χρήση της τρίτης μεθόδου διάτρεξης. |
- | public class ReadLineByLine { | + | <code java ArrayListManipulation.java> |
+ | import java.util.*; | ||
+ | |||
+ | public class ArrayListManipulation { | ||
public static void main(String []args) { | public static void main(String []args) { | ||
- | try { | + | Random rand = new Random(new Date().getTime()); |
- | String input; | + | ArrayList<String> list = new ArrayList<String>(); |
- | int i=0; | + | System.out.println("Enter words (max 10):"); |
- | ArrayList<TelephoneNumber> numbers = new ArrayList<TelephoneNumber>(); | + | Scanner sc = new Scanner(System.in); |
- | BufferedReader in = new BufferedReader(new FileReader("telephone-list.txt")); | + | for(int i=0; i<10; i++) { |
- | while( (input = in.readLine()) != null && input.length() > 0 ) { | + | list.add(sc.next()); |
- | TelephoneNumber newNumber = createTelephoneNumber(input); | + | |
- | numbers.add( newNumber ); | + | |
- | } | + | |
- | System.out.println("-------- Telephone Numbers ---------"); | + | |
- | + | ||
- | Iterator it = numbers.iterator(); | + | |
- | while( it.hasNext() ) { | + | |
- | System.out.println(it.next()); | + | |
- | } | + | |
- | + | ||
- | } catch( IOException ex ) { | + | |
- | ex.printStackTrace(); | + | |
} | } | ||
+ | System.out.println("1. "+ArrayList2String1(list)); | ||
+ | Collections.sort(list); | ||
+ | System.out.println("2. "+ArrayList2String2(list)); | ||
+ | System.out.println("3. "+ArrayList2String3(list)); | ||
+ | } | ||
+ | | ||
+ | public static String ArrayList2String1(ArrayList<String> list) { | ||
+ | String str = ""; | ||
+ | for(int i=0; i<list.size(); i++) | ||
+ | str += list.get(i) + " "; | ||
+ | return str; | ||
+ | } | ||
+ | | ||
+ | public static String ArrayList2String2(ArrayList<String> list) { | ||
+ | String str = ""; | ||
+ | for(String e : list) | ||
+ | str += e + " "; | ||
+ | return str; | ||
} | } | ||
| | ||
- | public static TelephoneNumber createTelephoneNumber(String inputLine) { | + | public static String ArrayList2String3(ArrayList<String> list) { |
- | int commaPosition = inputLine.indexOf(","); | + | String str = ""; |
- | String name = inputLine.substring(0, commaPosition).trim(); | + | Iterator it = list.iterator(); |
- | String telephone = inputLine.substring( commaPosition+1 ).trim(); | + | while(it.hasNext()) |
- | TelephoneNumber t = new TelephoneNumber(name, telephone); | + | str += it.next()+" "; |
- | return t; | + | return str; |
} | } | ||
} | } | ||
Line 173: | Line 182: | ||
</code> | </code> | ||
+ | |Προηγούμενο: [[ :java:packages:using | Χρήση κλάσεων από άλλες κλάσεις ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:inheritance | Κληρονομικότητα ]] | | ||