java:jfc_intf_collection

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:jfc_intf_collection [2015/03/16 16:35]
gthanos [Εργασίες με πολλαπλές εγγραφές]
java:jfc_intf_collection [2017/02/17 16:29] (current)
gthanos [Εργασίες με πολλαπλές εγγραφές]
Line 1: Line 1:
-====== Collection ​Interface ​======+====== ​java.util.Collection ======
  
-Το βασικό Interface ​στην Java το οποίο αποτελεί το ελάχιστον κοινό ​Interface ​των ​//Set////List//, //Queue////Dequeue//.+To interface Collection περιγράφει μία συλλογή ​στοιχείων ιδίου ​τύπου. Αποτελεί το ελάχιστο κοινό ​interface ​των ​[[java:​jfc_intf_set|Set]][[java:​jfc_intf_list|List]][[https://docs.oracle.com/javase/7/docs/api/java/util/​Queue.html|Queue]].
  
 ===== Διάτρεξη ενός Collection ===== ===== Διάτρεξη ενός Collection =====
Line 43: Line 43:
 ==== 2ος τρόπος - iterator ==== ==== 2ος τρόπος - iterator ====
  
-Μπορείτε να αντικαταστήσετε την ''​iterateList''​ με την παρακάτω+Μπορείτε να αντικαταστήσετε την ''​iterateList''​ με την παρακάτω ​υλοποίηση. Ο τύπος [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Iterator.html|Iterator<​Τ>​]] είναι ένας παραμετρικός τύπος δεδομένων (ένα interface) που επιτρέπει την διάτρεξη του Collection από την αρχή έως το τέλος. 
 <code java> <code java>
   public void iterateList() {  ​   public void iterateList() {  ​
Line 53: Line 54:
 </​code>​ </​code>​
  
-Συνιστάται ο 2ος τρόπος αντί για τον 1ο εάν θέλετε καθώς διατρέχετε τη συλλογή να διαγράφετε ​και εγγραφές. ​+Στο παραπάνω παράδειγμα ​οι δύο μέθοδοι ''​iterateList()''​ είναι ισοδύναμες. Το πλεονέκτημα του iterator ​είναι ότι σας επιτρέπει να διαγράφετε ​εγγραφές ​καθώς διατρέχετε τη συλλογή. Συγκεκριμένα,​ μπορείτε ​να διαγράφετε ​εγγραφές μέσω της μεθόδου [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Iterator.html#​remove()|remove()]]. Για παράδειγμα, η παρακάτω μέθοδος διαγράφει όλα τα δεδομένα της συλλογής:​ 
 + 
 +<code java> 
 +<code java> 
 +  public void clearCollection() {   
 +    Iterator<​Student>​ it = students.iterator();​ 
 +    while( it.hasNext() ) { 
 +      it.remove();​ 
 +    } 
 +  } 
 +</​code>​ 
 + 
 +===== Βασικές μέθοδοι ===== 
 + 
 +  * **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​isEmpty()|isEmpty()]]:​** Εξετάζει αν το Collection έχει περιεχόμενα ή όχι επιστρέφοντας true/​false. 
 +  * **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​size()|size()]]:​** Επιστρέφει τον αριθμό των αντικειμένων που περιέχει το Collection ή μηδέν αν είναι άδειο. 
 +  * **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​iterator()|iterator()]]:​** Επιστρέφει ένα [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Iterator.html|Iterator<​E>​]] object για την διάτρεξη του Collection. 
  
 ===== Εργασίες με πολλαπλές εγγραφές ===== ===== Εργασίες με πολλαπλές εγγραφές =====
  
 +  * **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​clear()|clear()]]** - Διαγράφει όλα τα περιεχόμενα του Collection.
   * **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​containsAll%28java.util.Collection%29|containsAll(Collection<?>​ c)]]** - Επιστρέφει true εάν υπάρχουν όλα τα μέλη της ''​c''​ στην αρχική λίστα. Διαφορετικά επιστρέφει false.   * **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​containsAll%28java.util.Collection%29|containsAll(Collection<?>​ c)]]** - Επιστρέφει true εάν υπάρχουν όλα τα μέλη της ''​c''​ στην αρχική λίστα. Διαφορετικά επιστρέφει false.
  
Line 89: Line 108:
   public static void main(String args[]) {   public static void main(String args[]) {
     StudentCollection stl = new StudentCollection(); ​   ​     StudentCollection stl = new StudentCollection(); ​   ​
-    Collection <​Student>​ sts = stl.getStudents();​+    Collection <​Student>​ sts = stl.getStudents(); ​ // comment out this line and uncomment the following comments 
 +     
 +    /* 
 +    Collection <​Student>​ sts = new LinkedList<​Student>​();​ 
 +    sts.add(new Student("​John",​ "​Smith"​));​ 
 +    sts.add(new Student("​Stanley",​ "​Peters"​));​ 
 +    */
    
     if( stl.getStudents().containsAll(sts) ) {     if( stl.getStudents().containsAll(sts) ) {
Line 102: Line 127:
 </​code>​ </​code>​
  
-* **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​addAll%28java.util.Collection%29|removeAll(Collection<?>​ c)]]** - Προσθέτει όλες τις εγγραφές που περιέχονται στο Collection ''​c''​.+Στην συνέχεια βάλτε σχόλια στην γραμμή που υποδεικνύουν τα σχόλια και αφαιρέστε το τμήμα του κώδικα που είναι σε σχόλια. Μεταγλωττίστε και τρέξτε. Ποιό είναι το αποτέλεσμα αυτή την φορά; Γιατί συμβαίνει αυτό; 
 + 
 +<WRAP center 70% round tip> 
 +Όταν συγκρίνονται δύο //​Collections//​ ως προς τα περιεχόμενα τους συγκρίνουμε εάν το πρώτο περιέχει __τα ίδια__ στοιχεία με το δεύτερο,​ δηλαδή τα ίδια αντικείμενα. Εάν δημιουργηθούν αντίγραφα των αντικειμένων της μίας και τοποθετηθούν στην 2η η σύγκριση των περιεχομένων δεν επιστρέφει ισότητα. 
 +</​WRAP>​ 
 + 
 +* **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​addAll%28java.util.Collection%29|addAll(Collection<?>​ c)]]** - Προσθέτει όλες τις εγγραφές που περιέχονται στο Collection ''​c''​.
  
 <code java StudentCollection.java>​ <code java StudentCollection.java>​
Line 187: Line 218:
     StudentCollection stl = new StudentCollection(); ​   ​     StudentCollection stl = new StudentCollection(); ​   ​
     Collection <​Student>​ sts = new LinkedList<​Student>​();​     Collection <​Student>​ sts = new LinkedList<​Student>​();​
 +    ​
 +    //comment for statement
     int i=0;     int i=0;
     for(Student st : stl.getStudents()) {     for(Student st : stl.getStudents()) {
Line 192: Line 225:
       if(++i==2) break;       if(++i==2) break;
     }     }
 +    ​
 +    //and uncomment this code below
 +    /*
 +    sts.add(new Student("​John",​ "​Smith"​));​
 +    sts.add(new Student("​Stanley",​ "​Peters"​));​
 +    */
     ​     ​
     stl.getStudents().removeAll(sts);​     stl.getStudents().removeAll(sts);​
Line 199: Line 238:
  
 </​code>​ </​code>​
 +
 +<WRAP center 70% round tip>
 +Και εδώ ισχύει ότι αναφέραμε παραπάνω αναφορικά με την σύγκριση των //​Collections//​. Eάν η συλλογή //sts// δημιουργηθεί από αντίγραφα των αντικειμένων της συλλογής //stl//, η μέθοδος //​removeAll//​ δεν θα αφαιρέσει κανένα στοιχείο. Αφαίρεση αντικειμένων θα γίνει μόνο για αντικείμενα που ανήκουν ταυτόχρονα στις συλλογές //stl// και //sts//.
 +</​WRAP>​
  
  
  
java/jfc_intf_collection.1426523718.txt.gz · Last modified: 2016/02/26 11:15 (external edit)