User Tools

Site Tools


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 [2021/04/05 07:17]
gthanos [Διάτρεξη ενός Collection]
java:jfc_intf_collection [2021/05/22 02:47]
Line 1: Line 1:
-====== Interface java.util.Collection  ====== 
- 
-Το βασικό Interface στην Java το οποίο αποτελεί το ελάχιστον κοινό Interface των //Set//, //List//, //Queue//, //Dequeue//. 
- 
-===== Διάτρεξη ενός Collection ===== 
- 
-To interface [[https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html|java.util.Collection]] είναι απόγονος του interface [[https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html|java.lang.Iterable]]. Ως εκ τούτου, η διάτρεξη οποιουδήποτε Collection μπορεί να γίνει με δύο τρόπους  
-  - μέσω For-Each Loop. 
-  - με τη βοήθεια ενός [[https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html|java.util.Iterator]]. 
- 
-==== 1ος τρόπος - for() ==== 
- 
-<code java StudentCollection.java> 
-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 void iterateList() {   
-    for(Student st: students) { 
-      System.out.println(st.toString()); 
-    } 
-  } 
-   
-  public static void main(String args[]) { 
-    StudentCollection stl = new StudentCollection(); 
-    stl.iterateList(); 
-  } 
- 
-</code> 
- 
-==== 2ος τρόπος - iterator ==== 
- 
-Μπορείτε να αντικαταστήσετε την ''iterateList'' με την παρακάτω υλοποίηση 
-<code java> 
-  public void iterateList() {   
-    Iterator<Student> it = students.iterator(); 
-    while( it.hasNext() ) { 
-      System.out.println(it.next().toString()); 
-    } 
-  } 
-</code> 
- 
-Συνιστάται ο 2ος τρόπος αντί για τον 1ο εάν θέλετε καθώς διατρέχετε τη συλλογή να διαγράφετε και εγγραφές.  
- 
-===== Βασικές μέθοδοι ===== 
- 
-  * **[[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. 
- 
-<code java StudentCollection.java> 
-import java.util.*; 
-import java.lang.*; 
- 
-import java.util.*; 
-import java.lang.*; 
- 
-public class StudentCollection { 
-    
-  public static void main(String args[]) { 
-    Collection<Student> students = new ArrayList<>(); 
-    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")); 
-         
-    Collection <Student> sts = new LinkedList<Student>(); 
-    sts.add(new Student("John", "Smith")); 
-    sts.add(new Student("Stanley", "Peters")); 
-  
-    if( students.containsAll(sts) ) { 
-       System.out.println("containsAll:TRUE"); 
-    } 
-    else { 
-       System.out.println("containsAll:FALSE"); 
-    } 
-     
-  } 
-} 
-</code> 
- 
-<WRAP tip center 80% round > 
-Απαραίτητη προϋπόθεση για να δουλέψει σωστά η μέθοδος ''containsAll'' είναι η παράμετρος κλάση του Collection να υλοποιεί τις μεθόδους ''equals'' και ''hashCode''. Εάν αφαιρέσετε έστω και μία από τις μεθόδους αυτές από την υλοποίηση της κλάσης Student θα παρατηρήσετε ότι η μέθοδος ''containsAll'' δεν αναγνωρίζει τα αντικείμενα της μεταβλητής ''sts'' ως αντίγραφα εκείνων που περιέχονται στην αρχική λίστα φοιτητών ''students''. 
-</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.*; 
- 
-public class StudentCollection { 
-    
-  public static void main(String args[]) { 
-    Collection<Student> students = new ArrayList<>(); 
-    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")); 
-         
-    Collection <Student> sts = new LinkedList<Student>(); 
-    sts.add(new Student("John", "Smith")); 
-    sts.add(new Student("Stanley", "Peters")); 
-  
-    students.addAll(sts); 
-    print(students); 
-     
-  } 
-   
-  public static void print(Collection<Student> collection) { 
-    Iterator<Student> it = collection.iterator(); 
-    while(it.hasNext()) 
-      System.out.println(it.next()); 
-  } 
-} 
-</code> 
- 
-<WRAP todo center 80% round > 
-Στον παραπάνω κώδικα αντικαταστήστε την πρώτη γραμμή της ''main'' με 
-<code> 
-Collection<Student> students = new HashSet<>(); 
-</code> 
- 
-Τι παρατηρείτε; Γιατί συμβαίνει αυτό; 
-</WRAP> 
- 
-  * **[[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.*; 
- 
-public class StudentCollection { 
-    
-  public static void main(String args[]) { 
-    Collection<Student> students = new ArrayList<>(); 
-    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")); 
-         
-    Collection <Student> sts = new LinkedList<Student>(); 
-    sts.add(new Student("John", "Smith")); 
-    sts.add(new Student("Stanley", "Peters")); 
-  
-    students.addAll(sts); 
-    students.removeAll(sts); 
-    print(students); 
-     
-  } 
-   
-  public static void print(Collection<Student> collection) { 
-    Iterator<Student> it = collection.iterator(); 
-    while(it.hasNext()) 
-      System.out.println(it.next()); 
-  } 
-} 
-</code> 
- 
-Παρατηρήστε ότι η μέθοδος ''removeAll'' αφαιρεί το σύνολο των εγγραφών ακόμη και εάν μία εγγραφή εμφανίζεται περισσότερες από μία φορές. 
- 
-|Προηγούμενο: [[:java:jfc_interfaces | JCF Interfaces ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:jfc_intf_set | Interface java.util.Set ]] | 
  
java/jfc_intf_collection.txt · Last modified: 2021/05/22 02:47 (external edit)