Week. 6: Java Collections

Σχετικά έγγραφα
Week 7: Java Collection Classes

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

JDSL Java Data Structures Library

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Standard Template Library (STL) C++ library

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Wrapper Classes, Abstract Classes and Interfaces

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

Collections Lists - ArrayLists. Παναγιώτης Σφέτσος, PhD

Προγραμματισμός ΙΙ (Java) 7. Συλλογές δεδομένων

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Λίστες και Ακολουθίες. Λίστες και ακολουθίες 1

Γαβαλάς Δαμιανός

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Βασικές Έννοιες Δοµών Δεδοµένων

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Δομές Δεδομένων & Αλγόριθμοι

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

Δομές Δεδομένων (Data Structures)

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

ιαφάνειες παρουσίασης #3

Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

Εισαγωγή στον Προγραµµατισµό - Εβδοµάδα 7

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

4 Συλλογές Αντικειμένων

Προγραμματισμός Διαδικτύου

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Α. Ερωτήσεις Ανάπτυξης

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 11: Vectors (διανύσματα)

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Οντοκεντρικός Προγραμματισμός

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

Κεφάλαιο 6 Ουρές Προτεραιότητας

Βασικά Στοιχεία της Java

Πληροφορική 2. Δομές δεδομένων και αρχείων

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

4. Συνδεδεμένες Λίστες

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Αντικειμενοστρεφής Προγραμματισμός

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

Προγραμματισμός ΙI (Θ)

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Προγραμματισμός I (Θ)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Πληροφορική 2. Αλγόριθμοι

Ενδεικτικές Ερωτήσεις Θεωρίας

Προγράμματα με δομή Κληρονομικότητας

ΕΠΙΜΟΡΦΩΣΗ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΓΙΑ ΤΑ ΝΕΑ ΑΝΑΛΥΤΙΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΝΕΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Γ ΓΥΜΝΑΣΙΟΥ

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Βασικά Στοιχεία της Java

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Transcript:

Week 6: Java Collections Συλλογές δεδοµένων [collections] Εβδοµάδα 6: Συλλογές δεδοµένων στην Java Οι συλλογές [collections] (αναφέρονται και ως «υποδοχείς δεδοµένων» [containers]) είναι κλάσεις που χρησιµοποιούνται για την αποθήκευση αντικειµένων Αποθηκεύουν µία συλλογή από στοιχεία [elements] Τα στοιχεία Το αντικείµενο τύπου «συλλογής» Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 2 ιανύσµατα και συνδεδεµένες λίστες Οι συλλογές µπορεί να υλοποιηθούν µε δύο διαφορετικές δοµές δεδοµένων: τα διανύσµατα και τις συνδεδεµένες λίστες/δοµές διάνυσµα ιανύσµατα [arrays] Υποστηρίζονται ως µέρος της Java ιαθέσιµα σε σχεδόν όλες τις γλώσσες προγραµµατισµού Απευθείας αντιστοίχιση µε την αρχιτεκτονική του υπολογιστή Συνδεδεµένη λίστα Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 3 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 4 Συνδεδεµένες δοµές Μπορεί να υλοποιηθούν σε κάθε γλώσσα που υποστηρίζει αναφορές [references] ή δείκτες [pointers] (σχεδόν όλες οι σύγχρονες γλώσσες προγραµµατισµού) Εισαγωγή σε συνδεδεµένες λίστες πριν µετά Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 5 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 6

ιαγραφή από συνδεδεµένες λίστες πριν Άλλες συνδεδεµένες δοµές δένδρο Γράφηµα µετά Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 7 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 8 Σύγκριση Ποια δοµή υπερτερεί; Τα διανύσµατα ή οι συνδεδεµένες δοµές; Θέµατα : Αύξηση µεγέθους [growing] Εισαγωγή στοιχείου ιαγραφή στοιχείου Προσπέλαση Απαιτούµενη µνήµη ιανύσµατα µεταβλητού µεγέθους [Growable arrays] Τα διανύσµατα στην γνήσια µορφή τους δεν είναι πρακτικά γιατί δεν µπορεί να αυξήσουν το µήκος τους όταν αυτό απαιτείται. Η λύση: «διανύσµατα µεταβλητού µεγέθους» Ένα διάνυσµα µεταβλητού µεγέθους χρησιµοποιεί µία κλάση για να αποθηκεύει ένα απλό διάνυσµα. Όταν απαιτείται, η κλάση αντικαθιστά το διάνυσµα το οποίο χρησιµοποιεί µε άλλο µεγαλύτερο. Το διάνυσµα χρησιµοποιείται µε έµµεσο τρόπο. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 9 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 10 Επανακαταχώρηση διανύσµατος Νέο στοιχείο ηµιουργεί µεγαλύτερο διάνυσµα Αντιγράφει σε αυτό όλα τα στοιχεία Εισάγει το νέο στοιχείο ιαγράφει το παλιό διάνυσµα Χωρητικότητα [capacity] Η επανακαταχώρηση είναι µία «ακριβή» λειτουργία Το µέγεθος του διανύσµατος πρέπει να είναι µεγαλύτερο από το άµεσα αναγκαίο έτσι ώστε η προσθήκη κάθε νέου στοιχείου να µην προκαλεί επανακαταχώρηση του διανύσµατος. Μέγεθος [size] σε αντιπαράθεση µε χωρητικότητα [capacity] Μέγεθος: το λογικό µέγεθος των δεδοµένων Χωρητικότητα: το φυσικό µέγεθος του διανύσµατος Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 11 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 12

Αύξηση µεγέθους Σύγκριση: Υλοποίηση βασιζόµενη σε διανύσµατα και σε συνδεδεµένες δοµές Πως υλοποιείται η αύξηση µεγέθους; ιάνυσµα: πιθανή επανακαταχώρηση Συνδεδεµένη δοµή: εύκολη Εισαγωγή στοιχείων Με ποιο τρόπο εισάγονται τα στοιχεία; ιάνυσµα: άλλα στοιχεία (πιθανώς µεγάλος αριθµός) πρέπει να µετατοπισθούν [shifted] (µόνο εάν τα στοιχεία πρέπει να είναι διατεταγµένα) Συνδεδεµένη δοµή: εύκολη 0 : 1 0 : 2 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 13 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 14 ιαγραφή στοιχείων Με ποιο τρόπο διαγράφονται τα στοιχεία; ιάνυσµα: άλλα στοιχεία (πιθανώς µεγάλος αριθµός) πρέπει να µετατοπισθούν (µόνο εάν τα στοιχεία πρέπει να είναι διατεταγµένα) Συνδεδεµένη δοµή: εύκολη Εισαγωγή στοιχείων Στην περίπτωση που η διάταξη των στοιχείων δεν είναι απαραίτητη: ιάνυσµα: µπορεί να πραγµατοποιηθεί µε δυο καταχωρήσεις όµοια µε τις συνδεδεµένες δοµές 0 : 3 1 : 3 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 15 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 16 Προσπέλαση στοιχείων Με ποιο τρόπο προσπελάζονται τα στοιχεία; ιάνυσµα: άµεση, µια απλή εντολή, σταθερός χρόνος Συνδεδεµένη δοµή: διαπέραση της λίστας από την αρχή πολύ χρονοβόρα διαδικασία στην χειρότερη περίπτωση Απαιτούµενη µνήµη Πόση µνήµη απαιτείται; ιάνυσµα: Μία αναφορά για κάθε στοιχείο (εάν η χωρητικότητα δεν διαφέρει πολύ από τον αριθµό των στοιχείων) Συνδεδεµένη δοµή: συνήθως περισσότερη (δεν είναι προφανές από τα διαγράµµατα ισχύει στην πράξη) 2 : 3 3 : 3 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 17 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 18

Ανασκόπηση Όλες οι υλοποιήσεις των συλλογών δεδοµένων βασίζονται σε διανύσµατα ή σε συνδεδεµένες δοµές (ή σε συνδυασµό τους) Η κατανόηση των θεµάτων που αφορούν την υλοποίηση των συλλογών είναι πολύ σηµαντική στην εκλογή της κατάλληλης κλάσης-συλλογής της Java (µε βάση το συγκεκριµένο σκοπό για τον οποίο πρόκειται να χρησιµοποιηθεί) Συλλογές δεδοµένων στην Java Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 19 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 20 Το πλαίσιο υλοποίησης συλλογών στην Java Στην Java 1.1: µερικές (όχι πολλές) υλοποιήσεις συλλογών δεδοµένων (Vector, Hashtable) Στην Java 2 (JDK 1.2): Ένα πλαίσιο [framework] υλοποίησης συλλογών δεδοµένων Πλαίσιο υλοποίησης: Ένα σύνολο από διαπροσωπείες [interfaces], κλάσεις και αλγορίθµους για συγκεκριµένούς σκοπούς Το πλαίσιο υλοποίησης συλλογών στην Java ιαπροσωπείες (τύποι): Οι διαπροσωπείες της Java περιγράφουν διαφορετικούς λογικούς τύπους συλλογών δεδοµένων Υλοποιήσεις: κλάσεις της Java που υλοποιούν συγκεκριµένους λογικούς τύπους και λαµβάνουν υπ όψιν τους θέµατα επίδοσης [performance] (χρόνου και µνήµης) Αλγόριθµοι: στατικές µέθοδοι, διαθέσιµες για διάφορους τύπους συλλογών δεδοµένων Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 21 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 22 Τα πλεονεκτήµατα του πλαισίου υλοποίησης ιαπροσωπείες Μείωση της απαιτούµενης προγραµµατιστικής εργασίας Αύξηση της ταχύτητας παραγωγής λογισµικού και της ποιότητάς του Μεταφερσιµότητα κώδικα Ευκολία εκµάθησης της χρήσης των συλλογών Επαναχρησιµοποίηση κώδικα Η λογική οπτική γωνία των συλλογών δεδοµένων Επικεντρώνονται στη λειτουργικότητα Αφαιρούν/παραβλέπουν τις λεπτοµέρειες των υλοποιήσεων Όταν χρησιµοποιούµε µία συλλογή δεδοµένων, πρώτα πρέπει να επιλέξουµε την διαπροσωπεία (τη λειτουργικότητα της συλλογής) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 23 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 24

Οι κύριες διαπροσωπείες συλλογών Οι κύριες διαπροσωπείες συλλογών (2) Set SortedSet Collection List Map SortedMap Collection: Ο αφηρηµένος υπερτύπος όλων των συλλογών δεδοµένων Ένας υποδοχέας [container] στοιχείων public interface Collection { // Basic Operations int size(); boolean isempty(); boolean contains(object element); boolean add(object element); boolean remove(object element); Iterator iterator(); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); boolean removeall(collection c); boolean retainall(collection c); void clear(); // Array Operations Object [ ] toarray(); Object [ ] toarray(object a[ ]); } Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 25 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 26 Οι κύριες διαπροσωπείες συλλογών (3) Set Χωρίς επαναλήψεις στοιχείων, χωρίς διάταξη Παράδειγµα: φοιτητές ενός τµήµατος List διατεταγµένες (ακολουθίες); Επιτρέπει επαναλήψεις στοιχείων, προσπέλαση µε βάση τη θέση του στοιχείου στην ακολουθία [index access], (πχ. Vector) Παράδειγµα: ηµερήσιο πρόγραµµα ηλεκτρονικής ατζέντας Map Προσπέλαση µε βάση τη λέξη-κλειδί [key-value] κάθε στοιχείου (πχ. Hashtable) Ταξινοµηµένες Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 27 Ταξινοµηµένες συλλογές δεδοµένων Τα στοιχεία ταξινοµούνται αυτόµατα Τα στοιχεία κάθε τύπου ταξινοµούνται µε βάση τον ορισµό του τελεστή ταξινόµησής του Πχ. Οι ακέραιοι ταξινοµούνται µε βάση την αριθµητική διάταξη, οι ηµεροµηνίες [Date] µε βάση τη χρονολογική διάταξη, οι συµβολοσειρές µε βάση την αλφαβητική διάταξη sorted set: παράδειγµα: λίστα φοιτητών τµήµατος sorted map: παράδειγµα: λεξικό Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 28 Υλοποίηση ταξινοµηµένων συλλογών Παράδειγµα: συλλογή SortedSet από φοιτητές Πως λειτουργεί; Η διαπροσωπεία Comparable Η διαπροσωπεία Comparable πρέπει να υλοποιείται από τα στοιχεία των ταξινοµηµένων συλλογών δεδοµένων Χρειαζόµαστε έναν ορισµό για την «ταξινόµηση» των αντικειµένων Λύση: Η διαπροσωπεία Comparable! public interface Comparable { int compareto(object o); } Comparable Person Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 29 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 30

Η χρήση της διαπροσωπείας Comparable Οι ταξινοµηµένες συλλογές δεδοµένων καλούν τη µέθοδο compareto() των στοιχείων της συλλογής για να επιτύχουν την ταξινόµησή τους does a cast of object to Comparable add() SortedSet compareto() Comparable Person compareto() Ανασκόπηση Οι κύριες διαπροσωπείες συλλογών : Τρεις βασικοί τύπου συλλογών: Set, List, Map περιγράφουν διαφορετικούς λογικούς τύπους συλλογών δεδοµένων Έχουµε ήδη µελετήσει: υο βασικές τεχνικές υλοποίησης: συνδεδεµένες δοµές και διανύσµατα Εποµένη ερώτηση : Ποιες είναι οι υλοποιήσεις; Ποιες είναι οι κλάσεις; Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 31 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 32