Week 7: Java Collection Classes

Σχετικά έγγραφα
Week. 6: Java Collections

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

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

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

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

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

Σι θα δούμε σε αυτό το μάθημα;

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Συλλογές

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

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

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

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

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

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

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

Αλγοριθμική και Προγραμματισμός

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

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n

Standard Template Library (STL) C++ library

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

10. Πίνακες Κατακερματισμού

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

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

public class ArrayQueue implements Queue {

JDSL Java Data Structures Library

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

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

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

Διάλεξη Εισαγωγή στη Java, Μέρος B

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Γενικευμένες κλάσεις Συλλογές

public class ArrayStack implements Stack {

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

Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Συλλογές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Εναρξη Μαθήµατος. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Συλλογές

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

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

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 29 Αυγούστου 2011

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

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

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

Εναρξη Μαθήµατος. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων.

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

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

Γενικοί Τύποι. 13 Ιανουαρίου 2011 Αντικειμενοστρεφής Προγραμματισμός στη Java 32

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

Σημειώσεις δεύτερης εβδομάδας

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

Πίνακες Κατακερματισμού. Hash Tables. Προγραμματισμός II 1

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Α ν ύ σ μ α τ α - V e c t o r s

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

Πολλές φορές έχουμε πολλές μεταβλητές του ίδιου τύπου που συσχετίζονται και θέλουμε να τις βάλουμε μαζί.

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

Βιβλιοθήκες συλλογών (κιβωτίων)

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

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

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Transcript:

Week 7: Java Collection Classes Υλοποιήσεις Εβδοµάδα 7: Κλάσεις συλλογών δεδοµένων στην Java Τύποι συλλογών δεδοµένων Τεχνικές υλοποίησης linked Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 2 οµές δεδοµένων συλλογών Java Η Java χρησιµοποιεί τις παρακάτω δοµές δεδοµένων στις υλοποιήσεις των συλλογών: Συνδεδεµένη λίστα [linked list] οµή βασισµένη αποκλειστικά σε «συνδέσµους» [links] Συνδεδεµένη λίστα [linked list] υναµικό διάνυσµα [resizable ] «Ισοσκελισµένο» δένδρο [balnanced tree] Πίνακα κατακερµατισµού [hash table] Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 3 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 4 υναµικό διάνυσµα [resizable ] Βασίζεται σε απλά διανύσµατα Χρησιµοποιεί επανακαταχώρηση [reallocation] «Ισοσκελισµένο» δένδρο [balnanced tree] Συνδεδεµένη δοµή υαδικό (στην Java) Πάντοτε ισοσκελισµένο (µέσω ανακατανοµής των στοιχείων του [reshuffling]) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 5 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 6

Πίνακας κατακερµατισµού [hash table] Συνδυασµός διανύσµατος και συνδεδεµένης δοµή Υλοποιήσεις υλοποιήσεις διαπροσωπείες hashtable tree linked list Χρησιµοποιεί τιµές κατακερµατισµού [hash values] για την τοποθέτηση των στοιχείων στην κατάλληλη θέση Πολύ γρήγορη ανάκτηση στοιχείων Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 7 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 8 Υλοποιήσεις συλλογών δεδοµένων Java Υλοποιήσεις συλλογών δεδοµένων Java διαπροσωπείες υλοποιήσεις hashtable Hash Hash Array tree Tree Tree linked list Linked : Array (σταθερός χρόνος προσπέλασης, χρησιµοποιείται στις περισσότερες περιπτώσεις) Linked (γρήγορη εισαγωγή στοιχείων) : Hash (γρήγορη δοµή, χρησιµοποιείται στις περισσότερες περιπτώσεις) Tree (ταξινοµηµένη) : Hash (γρήγορη δοµή) Tree (ταξινοµηµένη) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 9 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 10 Οι συλλογές στην Java 1.1 Χρήση των συλλογών δεδοµένων Τι απέγιναν οι κλάσεις Vector και Hashtable; Αρχικά: επιλέξτε τη διαπροσωπία (λειτουργικότητα) Κατόπιν: επιλέξτε την υλοποίηση (κλάση) Στην Java 2 (JDK 1.2) Η κλάση Vector έχει αντικατασταθεί από την Array Η κλάση Hashtable έχει αντικατασταθεί από την Hash ηµιουργήστε µια κλάση Καταχωρείστε αντικείµενα συλλογών σε µεταβλητές τύπου διαπροσωπίας Στην Java 2 πρέπει να χρησιµοποιούµε τις νέες κλάσεις συλλογής δεδοµένων Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 11 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 12

Χρήση διαπροσωπίας ως τύπου Παράδειγµα: χρήση της Linked ως τύπο Linked things; things = new Linked(); void process(linked listtoprocess) Χρήση εναλλακτικής υλοποίησης Linked things; things = new Linked(); void process(linked listtoprocess) Εάν αλλάξουµε τη συνδεδεµένη λίστα σε Array, κάθε χρήση της Linked πρέπει να αντικατασταθεί µε Array (δηλώσεις µεταβλητών, δηλώσεις παραµέτρων, δηµιουργία αντικειµένων) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 13 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 14 Χρήση εναλλακτικής υλοποίησης (2) Array things; things = new Array(); void process(array listtoprocess) Η εύρεση αναφορών της αρχικής κλάσης (Linked) και η αντικατάσταση τους µε αναφορές στη νέα κλάση (Array) είναι µια χρονοβόρα και επιρρεπής στα λάθη διαδικασία. Χρήση εναλλακτικής υλοποίησης (3) Η λύση: χρησιµοποιήστε µόνο διαπροσωπείες () στις δηλώσεις. Χρησιµοποιήστε την κλάση υλοποίησης µια µόνο φορά για τη δηµιουργία του αντικειµένου things = new Linked(); void process( listtoprocess) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 15 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 16 «ιαπροσπελαστές» [iterators] Οι διαπροσπελαστές [iterators] χρησιµοποιούνται για να προσπελαστούν τα αντικείµενα µίας συλλογής δεδοµένων Επιστρέφει ένα αντικείµενο διαπροσπελαστή προς µια συλλογή public interface Collection Iterator iterator(); public interface Iterator boolean hasnext(); Object next(); void remove(); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 17 Χρήση διαπροσπελαστών [iterators] Συνήθης κώδικας για την προσπέλαση των στοιχείων µιας συλλογής: void printall(collection people) for (Iterator i = people.iterator(); i.hasnext(); ) Person person = (Person)i.next(); person.print(); Πολυµορφικός (Όµοιοι µε τους «enumerations» της Java 1.1, µε σωστή λειτουργία κατά τη διαγραφή στοιχείων) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 18

«Μαζικές» [bulk] λειτουργίες boolean containsall(collection c); Επιστρέφει true εάν η συλλογή περιέχει όλα τα στοιχεία της συλλογής c που δίδεται σαν παράµετρος. boolean addall(collection c); Εισάγει όλα τα στοιχεία της συλλογής c που δίδεται σαν παράµετρος στην παρούσα συλλογή. boolean removeall(collection c); ιαγράφει από την συλλογή τα στοιχεία τα οποία περιέχονται επίσης στην συλλογή c που δίδεται σαν παράµετρος «Μαζικές» [bulk] λειτουργίες (2) boolean retainall(collection c); Κρατάει στη συλλογή τα στοιχεία τα οποία περιέχονται επίσης στην συλλογή c που δίδεται σαν παράµετρος και διαγράφει τα υπόλοιπα. void clear(); ιαγράφει όλα τα στοιχεία από τη συλλογή. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 19 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 20 Λειτουργίες διανυσµάτων Για συµβατότητα µε προηγούµενες εκδόσεις [backwards compatibility] οι συλλογές µπορεί να µετατραπούν σε διανύσµατα: Object[] toarray(); Object[] toarray(object a[]); Μετατροπή σε διανυσµα από Objects: Object[] a = c.toarray(); Γεµίζει προϋπάρχων διάνυσµα από Strings c.toarray(new String[c.size()]); Μετατρέπει σε νέο διανυσµα από Strings: String[] a = (String[])c.toArray(new String[0]); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 21 Αλγόριθµοι Στην κλάση Collections περιέχονται διάφοροι γενικής χρήσης αλγόριθµοι (στατικές µέθοδοι): static int binarysearch( list, Object key) Searches the specified list for the specified object using the binary search algorithm. static void copy( dest, src) Copies all of the elements from one list into another. static void fill( list, Object o) Replaces all of the elements of the specified list with the specified element. static Object max(collection coll) Returns the maximum element of the given collection, according to the natural ordering of its elements. static Object min(collection coll) Returns the minimum element of the given collection, according to the natural ordering of its elements. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 22 Αλγόριθµοι (2) static void reverse( l) Reverses the order of the elements in the specified list. static void shuffle( list) Randomly permutes the specified list using a default source of randomness. static void sort( list) Sorts the specified list into ascending order, according to the natural ordering of its elements. static singleton(object o) Returns an immutable set containing only the specified object. c.removeall(collections.singleton(e)); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 23 Η διαπροσωπία public interface Ήδη δηλωµένα στην Collection int size(); boolean isempty(); boolean contains(object element); boolean add(object element); boolean remove(object element); Iterator iterator(); boolean containsall(collection c); boolean addall(collection c); boolean removeall(collection c); boolean retainall(collection c); void clear(); Object[] toarray(); Object[] toarray(object a[]); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 24

Η διαπροσωπία public interface extends Collection // Positional Access Object get(int index); Object set(int index, Object element); void add(int index, Object element); Object remove(int index); abstract boolean addall(int index, Collection c); // Search int indexof(object o); int lastindexof(object o); Iterator listiterator(); Iterator listiterator(int index); sub(int from, int to); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 25 Η διαπροσωπία public interface Object put(object key, Object value); Object get(object key); boolean containskey(object key); boolean containsvalue(object value); public key(); public Collection values(); public entry(); // Interface for entry elements public interface Entry Object getkey(); Object getvalue(); Object setvalue(object value); (όχι πλήρης) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 26