java:jfc_intf_collection

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:jfc_intf_collection [2015/03/16 16:17]
gthanos created
java:jfc_intf_collection [2017/02/17 15:44]
gthanos [Collection Interface]
Line 1: Line 1:
 ====== Collection Interface ====== ====== Collection Interface ======
  
-Το βασικό Interface στην Java το οποίο αποτελεί το ελάχιστον κοινό Interface των ​//Set////List////Queue////Dequeue/.+Το βασικό Interface στην Java το οποίο αποτελεί το ελάχιστον κοινό 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''​ με την παρακάτω ​υλοποίηση
 <code java> <code java>
   public void iterateList() {  ​   public void iterateList() {  ​
Line 55: Line 55:
 Συνιστάται ο 2ος τρόπος αντί για τον 1ο εάν θέλετε καθώς διατρέχετε τη συλλογή να διαγράφετε και εγγραφές. ​ Συνιστάται ο 2ος τρόπος αντί για τον 1ο εάν θέλετε καθώς διατρέχετε τη συλλογή να διαγράφετε και εγγραφές. ​
  
-===== Εργασίες με πολλαπλές εγγραφές ​=====+===== Βασικές μέθοδοι ​=====
  
-==== containsAll(Collection<​?c) ====+  * **[[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. 
 + 
 + 
 +===== Εργασίες με πολλαπλές εγγραφές =====
  
-Επιστρέφει true εάν υπάρχουν όλα τα μέλη της ''​c''​ στην αρχική λίστα. Διαφορετικά επιστρέφει false.+  * **[[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.
  
 <code java StudentCollection.java>​ <code java StudentCollection.java>​
Line 86: Line 92:
   ​   ​
   public Collection<​Student>​ getStudents() {   public Collection<​Student>​ getStudents() {
- return students;+    ​return students;
   }   }
   ​   ​
   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 104: Line 116:
 </​code>​ </​code>​
  
 +Στην συνέχεια βάλτε σχόλια στην γραμμή που υποδεικνύουν τα σχόλια και αφαιρέστε το τμήμα του κώδικα που είναι σε σχόλια. Μεταγλωττίστε και τρέξτε. Ποιό είναι το αποτέλεσμα αυτή την φορά; Γιατί συμβαίνει αυτό;
 +
 +<WRAP center 70% round tip>
 +Όταν συγκρίνονται δύο //​Collections//​ ως προς τα περιεχόμενα τους συγκρίνουμε εάν η πρώτη περιέχει __τα ίδια ακριβώς__ στοιχεία με την δεύτερη,​ δηλαδή τα ίδια ακριβώς objects. Εάν δημιουργηθούν αντίγραφα των objects της μίας και τοποθετηθούν στην 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>​
 +import java.util.*;​
 +import java.lang.*;​
 +import java.util.*;​
 +import java.lang.*;​
 +
 +public class StudentCollection {
 +
 +  private Collection<​Student>​ students;
 +  ​
 +  public StudentCollection() {
 +    students = new LinkedList<​Student>​();​
 +    populateList();​
 +  }
 +  ​
 +  public final void populateList() {
 +    students.add(new Student("​John",​ "​Smith"​));​
 +    students.add(new Student("​Stanley",​ "​Peters"​));​
 +    students.add(new Student("​Edgar",​ "​Bloch"​));​
 +    students.add(new Student("​Suzan",​ "​Miles"​));​
 +    students.add(new Student("​Mary",​ "​Poppins"​));​
 +  }
 +  ​
 +  public Collection<​Student>​ getStudents() {
 +    return students;
 +  }
 + 
 +  public void iterateList() {  ​
 +    for(Student st: students) {
 +      System.out.println(st.toString());​
 +    }
 +  }
 +  ​
 +  public static void main(String args[]) {
 +    StudentCollection stl = new StudentCollection(); ​   ​
 +    Collection <​Student>​ sts = new LinkedList<​Student>​();​
 +    sts.add(new Student("​Lena",​ "​Travolta"​));​
 +    sts.add(new Student("​George",​ "​Thanos"​));​
 +    ​
 +    stl.getStudents().addAll(sts);​
 +    stl.iterateList(); ​   ​
 +  }
 +
 +</​code>​
 +
 +  * **[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​Collection.html#​removeAll(java.util.Collection)|removeAll(Collection<?>​ c)]]** - Αφαιρεί όλες τις εγγραφές που περιέχονται στο Collection ''​c''​.
 +<code java StudentCollection.java>​
 +import java.util.*;​
 +import java.lang.*;​
 +
 +import java.util.*;​
 +import java.lang.*;​
 +
 +public class StudentCollection {
 +
 +  private Collection<​Student>​ students;
 +  ​
 +  public StudentCollection() {
 +    students = new LinkedList<​Student>​();​
 +    populateList();​
 +  }
 +  ​
 +  public final void populateList() {
 +    students.add(new Student("​John",​ "​Smith"​));​
 +    students.add(new Student("​Stanley",​ "​Peters"​));​
 +    students.add(new Student("​Edgar",​ "​Bloch"​));​
 +    students.add(new Student("​Suzan",​ "​Miles"​));​
 +    students.add(new Student("​Mary",​ "​Poppins"​));​
 +  }
 +  ​
 +  public Collection<​Student>​ getStudents() {
 +    return students;
 +  }
 +  ​
 +  public void iterateList() {  ​
 +    for(Student st: students) {
 +      System.out.println(st.toString());​
 +    }
 +  }
 +  ​
 +  public static void main(String args[]) {
 +    StudentCollection stl = new StudentCollection(); ​   ​
 +    Collection <​Student>​ sts = new LinkedList<​Student>​();​
 +    ​
 +    //comment for statement
 +    int i=0;
 +    for(Student st : stl.getStudents()) {
 +      sts.add(st);​
 +      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.iterateList();​
 +    ​
 +  }
 +
 +</​code>​
  
 +<WRAP center 70% round tip>
 +Και εδώ ισχύει ότι αναφέραμε παραπάνω αναφορικά με την σύγκριση των //​Collections//​. Eάν η λίστα //sts// δημιουργηθεί από αντίγραφα των αντικειμένων της λίστας //stl//, η μέθοδος //​removeAll//​ δεν θα αφαιρέσει τίποτα.
 +</​WRAP>​
  
  
  
java/jfc_intf_collection.txt · Last modified: 2017/02/17 16:29 by gthanos