java:array_list

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
java:array_list [2016/03/19 07:22]
gthanos created
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//​.
  
  
-===== Παράδειγμα ​=====+===== Παράδειγμα ​=====
  
-Με βάση τα παραπάνω ας προσπαθήσουμε να ξαναγράψουμε το πρόγραμμα που δημιουργεί τον τηλεφωνικό κατάλογο, ώστε να αποθηκεύσουμε τα στοιχεία όχι σε ένα πίνακα θέσεων, αλλά σε ένα ​αντικείμενο 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.substringcommaPosition+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 | Κληρονομικότητα ]] |
  
  
java/array_list.1458372137.txt.gz · Last modified: 2016/03/19 07:22 by gthanos