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

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

Week 7: Java Collection Classes

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

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

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

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

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

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

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Δευτέρα 22 / 11 / 2017 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Τρίτη 1 / 12 / 2015 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Week. 6: Java Collections

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

public class ArrayStack implements Stack {

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

public class ArrayQueue implements Queue {

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες Μέθοδοι tostring και equals Αντικείμενα μέσα σε αντικείμενα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

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

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

Συνδεδεμένη Λίστα ΣΛ null VK 23

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

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

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

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές

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

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

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Generics και ArrayLists

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

JDSL Java Data Structures Library

Κλάσεις και Αντικείµενα

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

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

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

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Συλλογές, Στοίβες και Ουρές

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

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

Πρότυπα και διανύσματα

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

Είδη. Σε αυτό το εγχειρίδιο περιγράφεται η Δημιουργία, Μεταβολή, Διαγραφή και Αναζήτηση ενός είδους

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Transcript:

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

Εισαγωγικά Η κλάση ArrayList δίνει την δυνατότητα να αποθηκεύσουμε δεδομένα οποιουδήποτε τύπου σε μία δομή δεδομένων η οποία επιτρέπει τα εξής: Την προσθήκη στοιχείων σε οποιαδήποτε θέση της δομής. Τα στοιχεία που έπονται του διαγραφέντος στοιχείου μετακινούνται μία θέση προς το τέλος. Τη διαγραφή στοιχείων από οποιαδήποτε θέση. Τα στοιχεία που έπονται του διαγραφέντος στοιχείου μετακινούνται μία θέση προς την αρχή. Τη διάτρεξη των στοιχείων που αποθηκεύσαμε με τη σειρά που αυτά αποθηκεύτηκαν. Μπορείτε να σκέφτεστε στην δομή ArrayList ως ένα ευέλικτο πίνακα θεωρητικά άπειρης χωρητικότητας που μπορεί να α)μεγαλώνει σε μέγεθος προσθέτοντας στοιχεία σε οποιαδήποτε θέση, β) να μειώνει το μέγεθος του διαγράφοντας στοιχεία από οποιαδήποτε θέση. Κατά τις προσθήκες δεν διαγράφεται υφιστάμενη πληροφορία και κατά τις διαγραφές δεν δημιουργούνται κενά στον πίνακα.

Constructors public ArrayList(): Αρχικοποίηση της δομής δεδομένων. public ArrayList(int initialcapacity): Αρχικοποίηση της δομής δεδομένων ορίζοντας ένα αρχικό μέγεθος για τα δεδομένα που θα αποθηκευτούν. Ο constructor της κλάσης ArrayList καλείται με μία επιπλέον παράμετρο που είναι ο τύπος των δεδομένων που θα αποθηκευτούν σε αυτή. Για παράδειγμα, εάν θέλετε να αποθηκεύσετε δεδομένα τύπου String θα γράψετε. ArrayList<String> = new ArrayList<String>(); ενώ αν θέλετε να αποθηκεύσετε δεδομένα τύπου Integer θα γράψετε ArrayList<Integer> = new ArrayList<Integer>();

Βασικές λειτουργίες - Προσθήκη αντικειμένου - Διαγραφή αντικειμένου - Έλεγχος ύπαρξης αντικειμένου - Βασίζεται σε σωστή υλοποίηση της equals - Διάτρεξη των περιεχομένων

public boolean add(e e): Προσθέτει ένα αντικείμενο της στο τέλος της δομής. public void add(int index, E element): Προσθέτει ένα αντικείμενο στη θέση index. Η μέθοδος είναι χρήσιμη εάν θέλετε να προσθέσετε στην αρχή. Σε αυτή την περίπτωση μπορείτε να θέσετε την τιμή index ίση με 0. public void clear(): Διαγράφει όλα τα δεδομένα από την δομή. public boolean contains(object o): Ελέγχει εάν η λίστα περιέχει το συγκεκριμένο στοιχείο. public E get(int index): Επιστρέφει το στοιχείο της λίστας που βρίσκεται στην θέση index. Η αρίθμηση των στοιχείων της λίστας ξεκινάει από 0 έως size-1, όπου size ο αριθμός των αποθηκευμένων στοιχείων. public int indexof(object o): Επιστρέφει τη θέση του συγκεκριμένου στοιχείου στη λίστα. Εάν δεν υπάρχει το στοιχείο στη λίστα επιστρέφει -1. public boolean isempty(): Επιστρέφει true εάν η λίστα είναι άδεια, διαφορετικά επιστρέφει false. public Iterator<E> iterator(): Επιστρέφει ένα αντικείμενο τύπου java.util.iterator προκειμένου να μπορούμε να διατρέξουμε τη λίστα. public E remove(int index): Διαγράφει το αντικείμενο που είναι αποθηκευμένο στη λίστα στη θέση index. public boolean remove(object o): Διαγράφει το αντικείμενο από την λίστα, εφόσον αυτό υπάρχει και επιστρέφει true. Εάν δεν υπάρχει επιστρέφει false. public int size(): Επιστρέφει τον αριθμό των αποθηκευμένων στοιχείων στη δομή. public E set(int index, E element) : Θέτει την τιμή του στοιχείου στη θέση index ίση με element.

Iterators - Οι iterators μας επιτρέπουν να διατρέξουμε μια δομή (όπως η ArrayList) χωρίς να γνωρίζουμε πώς ακριβώς είναι υλοποιημένη. - Αυτό είναι ιδιαίτερα χρήσιμο όταν σκοπεύουμε να διαγράψουμε στοιχεία κατά τη διάρκεια της διάτρεξης. - Η διαγραφή αλλάζει τη διάταξη και το πλήθος των στοιχείων. Για παράδειγμα, αν χρησιμοποιήσουμε ένα κλασικό for loop για να διατρέξουμε τα στοιχεία ενός ArrayList έως ότου βρούμε ένα συγκεκριμένο και το διαγράψουμε, τότε θα πρέπει να λάβουμε υπόψη ότι στην τρέχουσα θέση θα μετακινηθεί το επόμενο στοιχείο, κι ότι το συνολικό πλήθος είναι λιγότερο κατά ένα.

Iterators - Οι iterators παρέχουν τις παρακάτω μεθόδους: - hasnext() : επιστρέφει true αν υπάρχει επόμενο στοιχείο, διαφορετικά false. - next() : επιστρέφει το επόμενο στοιχείο. - remove() : διαγράφει το στοιχείο το οποίο επεστράφη από την αμέσως προηγούμενη χρήση της next().

Iterators - Η διαδικασία χρήσης iterators για τη διάτρεξη και (προαιρετικά) αφαίρεση στοιχείων είναι: - Κατασκευάζεται ένα αντικείμενο τύπου Iterator - Μέσω της μεθόδου hasnext() ελέγχουμε αν υπάρχει επόμενο στοιχείο στη δομή - Μέσω της μεθόδου next() αποκτάμε πρόσβαση στο επόμενο στοιχείο. - Αν επιθυμούμε να διαγράψουμε το στοιχείο, χρησιμοποιούμε τη μέθοδο remove(). ΠΡΟΣΟΧΗ: Αν διατρέχουμε μια δομή μέσω iterator, τότε οποιαδήποτε διαγραφή πρέπει να γίνεται μέσω της remove που παρέχει ο iterator και όχι μέσω της remove της δομής.