java:array_list

Differences

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

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
java:array_list [2016/03/19 07:22]
gthanos created
java:array_list [2017/03/31 20:32]
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//.+Με βάση τα παραπάνω ​παραθέτουμε ​ένα πρόγραμμα ​το οποίο δημιουργεί ​μία σειρά από 20 τυχαίους αριθμούς και ​τους ​αποθηκεύει σε ένα ​[[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]]. 
 +  - εκτυπώνει τη λίστα με χρήση της δεύτερης μεθόδου διάτρεξης. 
 +  - αφαιρεί τους περιττούς αριθμούς με χρήση της μεθόδου //​removeOddNumbers//​. 
 +  - εκτυπώνει τη λίστα με χρήση της τρίτης μεθόδου διάτρεξης. 
 + 
 +<code java ArrayListManipulation.java>​
 import java.util.ArrayList;​ import java.util.ArrayList;​
 +import java.util.List;​
 import java.util.Iterator;​ import java.util.Iterator;​
 +import java.util.Collections;​
 +import java.util.Random;​
 +import java.util.Date;​
  
-public class ReadLineByLine ​{+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 list new ArrayList(); 
-      int i=0; +    for(int i=0i<20i++{ 
-      ArrayList<​TelephoneNumber>​ numbers ​= new ArrayList<​TelephoneNumber>​(); +      ​list.add(rand.nextInt(100));
-      BufferedReader in = new BufferedReader(new FileReader("​telephone-list.txt"​)); +
-      while( (input = in.readLine()) != null && input.length() > 0 ) { +
-        ​TelephoneNumber newNumber ​createTelephoneNumber(input); +
-        ​numbers.addnewNumber ); +
-      } +
-      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(listToString(list));​
 +    Collections.sort(list);​
 +    System.out.println(listToString2(list));​
 +    removeOddNumbers(list);​
 +    System.out.println(listToString3(list));​
   }   }
   ​   ​
-  public static ​TelephoneNumber createTelephoneNumber(String ​inputLine) { +  public static String ​listToString(ArrayList list) { 
-    int commaPosition ​inputLine.indexOf(",")+    ​String str = "";​ 
-    String ​name inputLine.substring(0, commaPosition).trim(); +    for(int i=0; i<list.size(); i++) 
-    ​String telephone ​inputLine.substringcommaPosition+).trim(); +      str += list.get(i) + " ​  ​"; 
-    ​TelephoneNumber t new TelephoneNumber(name, telephone); +    return str; 
-    ​return t;+  } 
 +   
 +  public static String listToString2(ArrayList list) { 
 +    String ​str "";​ 
 +    for(Object e : list) 
 +      str += e + " ​  ";​ 
 +    return str; 
 +  } 
 +   
 +  public static String listToString3(ArrayList list) { 
 +    String str = "";​ 
 +    Iterator it = list.iterator(); 
 +    ​while(it.hasNext()) 
 +      str +it.next()+" ​  ";​ 
 +    return str; 
 +  } 
 +   
 +  public static void removeOddNumbers(ArrayList list
 +    Iterator it = list.iterator(); 
 +    ​while(it.hasNext()) { 
 +      int num = (Integer)it.next(); 
 +      ​if(num % 2 != 0) 
 +        it.remove(); 
 +    }
   }   }
 } }
Line 173: Line 196:
 </​code>​ </​code>​
  
 +|Προηγούμενο:​ [[ :​java:​packages:​using | Χρήση κλάσεων από άλλες κλάσεις ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :​java:​inheritance | Κληρονομικότητα ]] |
  
  
java/array_list.txt · Last modified: 2018/03/15 14:49 by gthanos