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

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

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

Week. 6: Java Collections

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Generics και ArrayLists

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

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

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

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

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

public class ArrayStack implements Stack {

Standard Template Library (STL) C++ library

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

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

ΗΥ-252 Αντικειμενοστρεφής Προγραμματισμός Βασίλης Χριστοφίδης

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

public class ArrayQueue implements Queue {

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας

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

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

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

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

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

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

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

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

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

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

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

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

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

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

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

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

8. Μέθοδοι (Methods)

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

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

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

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

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

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

Transcript:

Εργαστήριο Java Lab 12 Αντικείμενο: Δομές Δεδομένων Πακέτο java.util Κλάση Vector και interface Enumeration H κλάση Vector έχει τα χαρακτηριστικά ενός array αλλά το μέγεθός της μπορεί να αλλάζει δυναμικά. Αν απαιτηθεί επιπλέον χώρος για ένα Vector από αυτόν που έχει ήδη δεσμευθεί γι' αυτό τότε είτε εάν ο προγραμματιστής το καθορίσει αυξάνεται ο διαθέσιμος χώρος σύμφωνα με την επιλογή του είτε διπλασιάζεται ο δεσμευμένος χώρος για το Vector. Τα Vectors αποθηκεύουν αναφορές σε αντικείμενα ιαθέσιμοι κατασκευαστές είναι: Vector() ημιουργεί Vector με 10 θέσεις. Vector(int x) ημιουργεί Vector με x θέσεις. Vector(Collection x) ημιουργεί αντίγραφο του Collection και το τοποθετεί σε Vector. Μέθοδοι void addelement(object obj) void insertelementat(object obj, int index) void setelementat(object obj, int index) boolean removeelement(object x) void removeallelements() boolean removeelementat(int index) Object elementat(int index) boolean contains(object elem) int indexof(object elem) int size() Enumeration elements() ιαγράφει όλα τα στοιχεία του διανύσματος Ελέγχει αν (με την μέθοδο equals) υπάρχει το elem στo Vector. Επιστρέφει την θέση στην οποία βρίσκεται η 1 η εμφάνιση του elem. Πλήθος στοιχείων στο Vector Επιστρέφει ένα Enumeration με το οποίο μπορούμε να διανύσουμε τα στοιχεία. Τα Vectors χρησιμοποιούν την διασύνδεση Enumeration και τις μεθόδους Object nextelement() επιστρέφει το επόμενο αντικείμενο του Vector boolean hasmoreelements() ελέγχει αν υπάρχει επόμενο στοιχείο στο Vector H Java έχει ένα σύνολο από έτοιμες δομές δεδομένων καθώς και συναρτήσεις που επιδρούν πάνω σε αυτές. Στην Java είναι πολύ σημαντική η έννοια της συλλογής (Collection). Μια συλλογή είναι μια δομή δεδομένων που μπορεί να κρατά άλλα αντικείμενα. Κλάση Arrays

Στατικές μέθοδοι: binarysearch, equals, fill, sort Άσκηση 1 Πρόγραμμα που επιδεικνύει κάποιες από τις μεθόδους της κλάσης Arrays public class Lab12_01 public static void main(string []args) int a[]=12,56,78,23,88,90,45,99,13,82; int b[]=new int[10]; Arrays.fill(b,1); System.out.println("Fill array with zeroes "); printintarray(b); Arrays.sort(a); System.out.println("Sorted Array "); printintarray(a); System.out.println("Search for 23 found at " + Arrays.binarySearch(a,23)); boolean f=arrays.equals(a,b); System.out.println("Array a and b are equal "+ f); String c[]="agrinio", "Mesolongi", "Nafpaktos"; List li1; li1=arrays.aslist(c); System.out.println("Array before "); printobjarray(c); printlist(li1); li1.set(1,"amfilohia"); System.out.println("Changed Array "); printobjarray(c); printlist(li1); public static void printintarray(int x[]) for (int i=0;i<x.length;i++) System.out.print(x[i]+ " "); System.out.println(); public static void printobjarray(object x[]) for (int i=0;i<x.length;i++) System.out.print(x[i]+ " "); System.out.println(); public static void printlist(list l) for (int i=0;i<l.size();i++) System.out.print(l.get(i)+ " "); System.out.println(); Interface List ιαταγμένη συλλογή που μπορεί να περιέχει και διπλότυπα στοιχεία. Κληρονομεί από το interface Collection. Οι ακόλουθες κλάσεις υλοποιούν το interface List Vector: ιάνυσμα ArrayList: Πίνακας με δυνατότητα αλλαγής μεγέθους (όμοια με τα Vectors απλά έχουν μεγαλύτερη ταχύτητα και συνίσταται η χρήση τους σε μη multithreaded εφαρμογές) LinkedList: Συνδεδεμένη λίστα Διανύσματα (Vectors και ArrayLists) Άσκηση 2 Να γράψετε πρόγραμμα που να δέχεται από τον χρήστη διάφορες πραγματικές αριθμητικές τιμές και να

υπολογίζει το πλήθος από τις τιμές που δόθηκαν και είναι μεγαλύτερες από τον μέσο όρο. Να μην χρησιμοποιηθεί κάποια στατική δομή πίνακα αλλά να χρησιμοποιηθεί η κλάση java.util.vector (ή εναλλακτικά η java.util.arraylist) έτσι ώστε να δημιουργηθεί ένα διάνυσμα το οποίο θα μεγαλώνει όσο ο χρήστης εισάγει τιμές. import java.util.vector; import java.util.enumeration; //import java.util.arraylist; //import java.util.iterator; import javax.swing.*; public class Lab12_02 Vector v=new Vector(); //ArrayList al=new ArrayList(); String s; double x, sum=0.0; int c=0; do s=joptionpane.showinputdialog(" ώσε ένα βαθμό (-1 για τερματισμό) "); x=double.parsedouble(s); if (x!=-1) v.addelement(new Double(x)); //al.add(new Double(x)); sum=sum+x; c++; while (x!=-1); double avg=sum / c; Enumeration e=v.elements(); //Iterator it=al.iterator(); int r=0; while (e.hasmoreelements()) //while (it.hasnext()) Double d; d=(double) e.nextelement(); //d=(double) it.next(); x=d.doublevalue(); if (x>avg) r++; JOptionPane.showMessageDialog(null, "Πλήθος τιμών μεγαλύτερων του μέσου όρου " + r, "Πληροφορία", 1); System.exit(0); Linked Lists Μέθοδοι των αντικειμένων LinkedList add(object x) Προσθέτει το αντικείμενο x στο τέλος της λίστας add(int a, Object x) Προσθέτει το αντικείμενο x στην 3 η θέση της λίστας addfirst(object x) Προσθέτει το αντικείμενο x ως πρώτο στοιχείο της λίστας addall(linkedlist x) Προσθέτει τα περιεχόμενα της λίστας x στο τέλος της λίστας listiterator() Επιστρέφει έναν iterator 2 κατευθύνσεων Μέθοδοι των αντικειμένων ListIterator boolean hasnext() Ελέγχει το εάν υπάρχει επόμενο στοιχείο boolean hasprevious() Ελέγχει το εάν υπάρχει προηγούμενο στοιχείο

Object next() Object previous() remove() Επιστρέφει το επόμενο στοιχείο Επιστρέφει το προηγούμενο στοιχείο Αφαιρεί το στοιχείο από την λίστα Άσκηση 3 Χρησιμοποιώντας την κλάση LinkedList δημιουργήστε μια διπλά συνδεδεμένη λίστα με τα ονόματα φοιτητών (panos, maria, kostas, petros, christos, sofia). Εμφανίστε τα ονόματα και τα μήκη τους από το πρώτο προς το τελευταίο και από το τελευταίο προς το πρώτο. Επιπλέον να ταξινομηθεί η λίστα χρησιμοποιώντας την στατική μέθοδο sort της κλάσης Collections. public class Lab12_03 LinkedList ll=new LinkedList(); ll.add("panos"); ll.add("maria"); ll.add("kostas"); ll.add("petros"); ll.add("christos"); ll.add("sofia"); ListIterator li=ll.listiterator(0); while (li.hasnext()) System.out.println(li.next()); li=ll.listiterator(ll.size()); System.out.println("\nREVERSE \n"); while (li.hasprevious()) System.out.println(li.previous()); System.out.println("\n " +ll); //Εκτύπωση της λίστας Collections.sort(ll); //ταξινόμηση της λίστας με την static μέθοδο sort της κλάσης Collections System.out.println("\n " +ll); //Εκτύπωση της ταξινομημένης λίστας System.exit(0); Κλάση Dictionary Ένα Dictionary αντιστοιχεί κλειδιά σε τιμές. Η κλάση Hashtable κληρονομεί από την Dictionary. H Dictionary έχει τις παρακάτω abstract μεθόδους Enumeration elements() Enumeration keys() Object put(object key, Object value) remove(object key) Object get(object key) boolean isempty() Επιστρέφει ένα enumeration με τις τιμές του Dictionary. Επιστρέφει ένα enumeration με τα κλειδιά του Dictionary. Εισάγει το ζεύγος key, value. ιαγραφή του ζεύγους με κλειδί key. Επιστρέφει το value τμήμα από το key-value ζεύγος. Ελέγχει εάν είναι άδειο το Dictionary. Πίνακες κατακερματισμού (hash table) Οι πίνακες συσχετίζουν κλειδιά με τιμές και δεν μπορούν να περιέχουν 2 φορές το ίδιο κλειδί. Οι κλάσεις Hashtable, HashMap, TreeMap υλοποιούν το Map interface

boolean containskey(object key) boolean containsvalue(object value) clear() Ελέγχει αν υπάρχει το αντίστοιχο κλειδί στο Hashtable. Ελέγχει αν υπάρχει η αντίστοιχη τιμή στο Hashtable. Αδειάζει το Hashtable. Άσκηση 4 Να κατασκευάσετε πρόγραμμα που να δημιουργεί ένα hashtable στο οποίο θα αποθηκεύονται τηλέφωνα υπηρεσιών του ΤΕΙ. Ο χρήστης δίνοντας το όνομα μιας υπηρεσίας να διαγράφει από το hashtable την αντίστοιχη εγγραφή αν υπάρχει και στην συνέχεια να εμφανίζονται οι εγγραφές με την μορφή: Department: ΧΧΧΧΧΧΧΧΧ Phone: ΧΧΧΧΧΧΧ. import javax.swing.*; public class Lab12_04 Hashtable h=new Hashtable(); h.put("gra","2631058354"); h.put("fax","2631058355"); h.put("tei","2631058201"); System.out.println("" + h); //Εκτύπωση όλου του hashtable String s; s=joptionpane.showinputdialog(" ώσε κλειδί για διαγραφή εγγραφής"); String r=(string) h.get(s); if (r==null) System.out.println("No Data"); else System.out.println("DELETED " + r); h.remove(s); Enumeration ek=h.keys(); Enumeration ev=h.elements(); while (ek.hasmoreelements()) System.out.println("\nDEPARTMENT: " + ek.nextelement()+ "\tphone: " + ev.nextelement()); System.out.println("\n " +h); System.exit(0); Κλάση HashSet Η συλλογή Set δεν περιέχει διπλότυπα και υλοποιείται με την κλάση HashSet. H κλάση TreeSet υλοποιεί το interface SortedSet που κληρονομεί από το Set και διατηρεί τα στοιχεία του σε ταξινομημένη σειρά. Άσκηση 5 Κατασκευάστε πρόγραμμα που να αφαιρεί από μια λίστα λεκτικών τις διπλότυπες εγγραφές να την ταξινομεί σε φθίνουσα σειρά και να την εμφανίζει εκ νέου. public class Lab12_05 String []a="sony", "eizo", "nec", "samsung", "nokia", "sony", "nec"; List x=arrays.aslist(a); System.out.println("List: " + x); HashSet hs1=new HashSet(x); System.out.println("Hashed Set: " + hs1); ArrayList al=new ArrayList(Arrays.asList(hs1.toArray())); Collections.sort(al,Collections.reverseOrder());

System.out.println("List: " + al); Κλάση Properties Πρόκειται για ένα μόνιμο Hashtable κατά την έννοια ότι τα περιεχόμενά του μπορούν να αποθηκευθούν στον δίσκο. Αντί για τις μεθόδους get και set χρησιμοποιούνται οι μέθοδοι getproperty και setproperty. Άσκηση 6 Να κατασκευάσετε πρόγραμμα που να αποθηκεύει σε ένα αρχείο "TELCODE.DAT" τα περιεχόμενα ενός λεξικού με τους τηλεφωνικούς κωδικούς (κλειδιά) και τα ονόματα των περιοχών (τιμές). import java.io.*; public class Lab12_06a Properties pht=new Properties(); pht.setproperty("2641", "Agrinio"); pht.setproperty("2631", "Mesolongi"); pht.setproperty("2651", "Ioannina"); pht.setproperty("261", "Patra"); try FileOutputStream fos=new FileOutputStream("TELCODE.DAT"); pht.store(fos, "Telephone codes"); fos.close(); catch(ioexception ex) ex.printstacktrace(); Να κατασκευάσετε πρόγραμμα που να διαβάζει και να εμφανίζει το παραπάνω αρχείο. import java.io.*; public class Lab12_06b Properties pht=new Properties(); try FileInputStream fis=new FileInputStream("TELCODE.DAT"); pht.load(fis); fis.close(); catch(ioexception ex) ex.printstacktrace(); Enumeration e=pht.propertynames(); while (e.hasmoreelements()) String k, v; k=e.nextelement().tostring(); v=pht.getproperty(k); System.out.println(k + " "+ v); ομή στοίβας Η κλάση java.util.stack περιέχει την υλοποίηση της δομής της στοίβας και κληρονομεί από την κλάση Vector.

Mέθοδοι Object push(object item) Object pop() Object peek() int search(object x) boolean empty() εισάγει το αντικείμενο item στην στοίβα εξάγει το κορυφαίο αντικείμενο της στοίβας επιστρέφει χωρίς να εξάγει το κορυφαίο αντικείμενο της στοίβας επιστρέφει την απόσταση του αντικειμένου x από την κορυφή της στοίβας ελέγχει αν η στοίβα είναι άδεια Άσκηση 7 Να κατασκευάσετε πρόγραμμα που να εισάγει σε μια στοίβα 10 αντικείμενα λεκτικά και στην συνέχεια να τα αποσύρει. public class Lab12_07 Stack s=new Stack(); for (int i=1;i<=10;i++) s.push("item " +i); System.out.println("Item 10 found at: "+s.search("item 10")); System.out.println("Stack: " + s); Enumeration e=s.elements(); StringBuffer sb=new StringBuffer(); while (e.hasmoreelements()) sb.append(e.nextelement()); sb.append(" <-> "); System.out.println(sb.toString()); while (!s.empty()) String si = (String) s.pop(); System.out.println("Item popped out: " + si);