Informatica. Deel II&III: les 9. OS, Hashing & Mappen. Jan Lemeire. Informatica deel II&III. februari mei Informatica II: les 9

Vergelijkbare documenten
Waarmaken van Leibniz s droom

Informatica. Deel II: les 9 OS & AVL. Jan Lemeire. Informatica deel II. februari mei Informatica II: les 9

Informatica. 2 e semester: les 9. OS & Sorteren. Jan Lemeire Informatica 2 e semester februari mei Informatica II: les 9

Hoofdstuk 3. Besturingssystemen

Informatica 2e semester

Informatica 2e semester

Informatica 2e semester

Informatica 2e semester

Hoofdstuk 9. Hashing

Informatica 2e semester

Informatica. 2 e semester: les 11. Hashing & Internet Slot. Jan Lemeire Informatica 2 e semester februari mei Informatica II: les 11

Informatica. Les 3. Elektronica Overschrijven - GUI. Jan Lemeire Informatica februari mei Parallel Systems: Introduction

HET BESTURINGSSYSTEEM

Informatica 2e semester

Informatica 2e semester

Informatica. Deel II: les 10. Bomen. Jan Lemeire Informatica deel II februari mei Informatica II: les 9

Programmeren in Java 3

Kleine cursus PHP5. Auteur: Raymond Moesker

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen


Erik Poll Martijn Warnier.

Informatica 2e semester

6,7. Werkstuk door een scholier 2286 woorden 24 januari keer beoordeeld. Informatica. Algemeen

IMP Uitwerking week 13

Windows Training voor 50-plussers. PC50plus trainingen Eikbosserweg AK Hilversum tel:

Het besturingssysteem of operating system, vaak afgekort tot OS is verantwoordelijk voor de communicatie van de software met de hardware.

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Vakgroep CW KAHO Sint-Lieven

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Multi user Setup. Firebird database op een windows (server)

Zelftest Java concepten

Software hoofdstuk Wat is de functie van een besturingssysteem? 2. Welke hoofdtaken heeft het besturingssysteem?

Zelftest Programmeren in Java

Zelftest Informatica-terminologie

Modelleren en Programmeren

Belangrijkste ideeën/concepten uit OS, incl. proces

Hoofdstuk 2. - is verantwoordelijk voor de communicatie van de software met de hardware.

SBO Nilda Pinto BASISKENNIS BESTURINGSSYTEMEN (MBI 1) PERIODE MATERIAAL BOEK SOFTWARE VOOR ICT SUPPORT 2 EN 3 (HANS VAN RHEENEN)

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR:

1 Client/Server. 2 Geschiedenis. 3 Toekomst

Informatica. 2 e semester: les 8. Software & binaire bomen. Jan Lemeire Informatica 2 e semester februari mei Parallel Systems: Introduction

slides3.pdf April 15,

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Modelleren en Programmeren

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Modelleren en Programmeren

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall,

Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht

Scripting 2 TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. ellipse(screenwidth/2, screenheight/2, 140,140); DOOR THIERRY BRANDERHORST

eerste voorbeelden in Java

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Overerving & Polymorfisme

Windows Basics. yvan vander sanden. 22 februari 2015

WORKSHOP ORANGE PI & PYTHON v september 2017

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Een stoomcursus door Edgar de Graaf, november 2006

in Operating System Concepten

Voor op afstand os installatie moeten de volgende onderdelen geïnstalleerd zijn op de Windows 2000 server.

in Operating System Concepten Doel van een Operating System Interrupts 3-Lagen model spooling (Simultaneous Peripheral Operation On Line)

Elementary Data Structures 3

Programmeren in C++ Efficiënte zoekfunctie in een boek

Inleiding.

1e college Introductie Applicatiebouw. Applicatiebouw{ } Onderdeel van SmartProducts

Er zijn verschillende OS bv: Microsoft Windows Apple Macintosh Linux-versies/distributies zoals Ubuntu en Knoppix

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

Android Development CCSS2011

Installatie Handleiding voor Modelit Applicatieprogrammatuur

Ingebouwde klassen & methodes

Modelleren en Programmeren

Opdracht 7a. Applicatiebouw 2014/2015

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Windows Basis - Herman Van den Borre 1

Albert-Jan de Croes & Stefan Willemink V4C Docent: Mevrouw van Uden

IN1805 I - Operating System Concepten

Informatica. Deel II: les 5. productieproces & stacks/queues/linked lists. Jan Lemeire Informatica deel II februari mei 2014

Module I - Informatica

Besturingssystemen Opdracht 1

ASRemote WebService. Via deze webservice kunt u:

Verslag: Computer. Naam: Tyrone Ste Luce. Klas: M4B

Windows XP Migratie opties. Bart van Dijk

Modelleren en Programmeren

Datastructuren en algoritmen voor CKI

Het begrip 'Proces' Proces-toestand

Inleiding Programmeren 2

DrICTVoip.dll v 2.1 Informatie en handleiding

Applications & Clients

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

Game of Life in Java

Solcon Online Backup. Aan de slag handleiding voor Linux

Demo document template available on the Rapptorlab website

Een eerste applicatie

Programmeren (1) Examen NAAM:

FAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten.

Modelleren en Programmeren

Zero profile Gedocumenteerd door: Chris Twiest Versie: 0.1 Datum:

Transcriptie:

Informatica Deel II&III: les 9 OS, Hashing & Mappen Jan Lemeire Informatica deel II&III februari mei 2015

Vandaag 1. Besturingssystemen 2. Java applets 3. Static in java 4. Hashing en Mappen

Hoofdstuk 7: Operating Systems Jan Lemeire Pag. 3 / 55

Bedrijfscomputers Initieel waren er voornamelijk bedrijfscomputers Centrale computer mainframe systemen Voornaamste fabrikant: IBM Jan Lemeire Pag. 4 / 55

Interactiviteit via Terminal Scherm van 24 lijnen van 80 tekens groot Gebruikers Informatica II: werken les 9 op de centrale computer via domme terminals die enkel het scherm tonen en de input van de gebruiker (via toetsenbord) doorgeven. Jan Lemeire Pag. 5 / 55

Toepassingen mainframe Gegevens (bvb boekhouding) van banken, bedrijven, winkels etc Gegevens worden bijgehouden in database Database = gestructureerd bijhouden van gegevens Eigenschappen mainframe: Betrouwbaarheid (heel belangrijk) Robuust (crasht bijna nooit) Veiligheid (security) van gegevens (bvb bankgegevens) Jan Lemeire Pag. 6 / 55

IBM gaat voor Personal Computer Computer voor thuis Kan op eigen kracht werken (niet geconnecteerd met centrale computer) De PC is geboren! IBM: op dat moment het grootste informaticabedrijf Concentreert zich op hardware De PC ontketent een nieuwe revolutie in de informatica 1981 Jan Lemeire Pag. 7 / 55

IBM gaat langs bij Bill Gates en vrienden Zitten thuis te programmeren Steken DOS in elkaar MicroSoft is geboren Nog steeds terug te vinden in Windows Cmd-window Programma s start je met commando (en eventueel argumenten)

IBM heeft Operating System nodig IBM gaat langs bij Bill Gates en zijn hippie -vrienden Zitten thuis te programmeren MicroSoft is geboren Steken DOS (Disc Operating System) in elkaar Nog steeds terug te vinden in Windows Cmd-window Programma s start je met commando (en eventueel argumenten dit zijn de String[] args van de main) Jan Lemeire Pag. 9 / 55

Commando-based: Je geeft commando s In de terminal of shell Jan Lemeire Pag. 10 / 55

Bill Gates wordt rijkste man ter wereld 0.1 Jan Lemeire Pag. 11 / 55

Macht ligt vanaf nu bij software en vooral het besturingsysteem 1984 IBM maakt historische vergissing door op hardware te blijven mikken Ze mist de softwareboot compleet Jan Lemeire Pag. 12 / 55

IBM Jan Lemeire Pag. 13 / 55

Besturingsysteem = Operating System (OS) OS regelt en organiseert de computer OS wordt van harde schijf gestart bij het booten BIOS zorgt hiervoor Een besturingssysteem (in het Engels operating system of afgekort OS) is een programma (meestal een geheel van samenwerkende programma's) dat na het opstarten van een computer in het geheugen geladen wordt en alle mogelijkheden van de computer aan de gebruiker. Het OS biedt ook de functionaliteiten aan om andere programma's - applicaties genoemd - uit te voeren. Jan Lemeire Pag. 14 / 55

Application Programming Interface (API) OS verstopt de details van de hardware voor de gebruiker en voor applicaties dmv een API Deze worden op een uniforme wijze aan de applicaties aangeboden. De API abstraheert de toegang tot de verschillende randapparatuur, zonder OS moet elk programma zelf instaan voor het aansturen van randapparatuur (zoals printer, beeldschermen, harde schijf). Gebruikersprogramma is enkel afhankelijk van het OS, niet van de randapparatuur. Het communiceren van het OS met het randapparaat gebeurt via een driver. Jan Lemeire Pag. 15 / 55

Hoofdtaken OS (vervolg) Verdelen van toegang tot systeembronnen (RAM-geheugen, opslag, printer etc.) tussen actieve programma's Elk programma krijgt een deel van het werkgeheugen toegewezen (java: standaard 64MB, je kan dit anders instellen) OS voorkomt dat programma buiten zijn deel gegevens kan lezen of schrijven (beveiliging!) Aanbieden gegevens (files) en applicaties aan gebruiker OS beheert het filesysteem (georganiseerd in een boomstructuur dmv folders) Verdelen van processortijd over de aktieve programma s Zie verder Jan Lemeire Pag. 16 / 55

Interactiviteit Geen interactiviteit = batch programma Programma en gegevens worden op voorhand klaargemaakt Tijdens de uitvoering kan je niet interageren met het programma Resultaten worden op het einde als geheel gepresenteerd Commando-gebaseerd Cf DOS, linux shell De commando s worden geïnterpreteerd en het programma gestart Je kan een lijst van commando s doorgeven ( batch ) Grafische User-Interface (GUI) Windows, muis, toetsenbord, touch screen Jan Lemeire Pag. 17 / 55

Task Manager Windows: start via Control-Alt-Delete Toont aktieve applicaties en processen, alsook processorgebruik Applicaties: van gebruiker Processen: naast processen van applicatie, ook processen en services van operating system, achtergrondprocessen van applicaties, Operating System verdeelt cycles van processor (CPU) over de verschillende processen (process scheduling) Op een modern OS kan je meerdere programma s tegelijk draaien. Het uitvoeren van een programma resulteert in een proces. Een achtergrondproces is in feite ook een gewoon programma, maar ze is niet zichtbaar voor de gebruiker. De achtergrondprocessen zorgen voor het beheer van het systeem of bieden Informatica services II: les 9 aan (zoals het sharen van je (muziek-)files en het checken Jan Lemeire Pag. 18 / 55 van je mailbox).

Processor kan maar 1 instructiesequentie tegelijk uitvoeren Jan Lemeire Pag. 19 / 55

Process scheduler De process-scheduler is een deel van het besturingssysteem dat op elk ogenblik bepaalt aan welk van alle programma's die zich in werkgeheugen bevinden de centrale verwerkingseenheid zal werken. Het hart van de computer, de processor of CPU, kan immers maar 1 programma tegelijk uitvoeren. De processor is immers opgebouwd volgens de Von Neumann-architectuur. Karakteristiek voor deze architectuur is dat hij één programma stap-voor-stap uitvoert. Moderne computers hebben echter meerdere processorcores (dual core, quadcore, ). Dat zijn dan in feite 2, respectievelijk 4 onafhankelijke processoren die elk één proces tegelijkertijd kunnen uitvoeren. De process-scheduler zal per core de processortijd verdelen over de lopende processen en threads: elk proces/thread krijgt een periode ( time slice ) toegekend. Jan Lemeire Pag. 20 / 55

Toestanden van proces De lopende processen, kunnen zich, op elk ogenblik in drie toestanden bevinden: 1) actief: de centrale verwerkingseenheid (processor) is aan het proces aan het werken; dwz. dat instructies van dat programma opgehaald worden door de stuureenheid. 2) geblokkeerd: een in- of uitvoeroperatie (Input/Output of I/O) is aan de gang en het proces moet wachten tot het einde ervan; 3) wachtend: het proces zou kunnen uitgevoerd worden, maar de centrale verwerkingseenheid is niet beschikbaar, ze is instructies van een ander proces aan het uitvoeren. Het proces moet wachten tot de proces-scheduler Informatica II: 9 processorcycles ter beschikking stelt. Jan Lemeire Pag. 21 / 55

Overgang van 1 proces naar een ander Als het aktieve proces op I/O (input/output) moet wachten Dikwijls wordt bij I/O het OS geaktiveerd, omdat die de I/O beheert (bvb toegang tot files) Of als de toegekende time slice die een proces toegekend krijgt op is Timer wordt gestart en geeft een interrupt Interrupt geeft aan processor aan dat de scheduler van het OS weer geaktiveerd moet worden Overgang van 1 proces naar een ander: context switch de staat vh proces wordt opgeslagen en dat van het ander wordt geladen Jan Lemeire Pag. 22 / 55

Interrupts Met een Interrupt ( onderbreking ) wordt een lopend programma onderbroken. Deze is voorzien in de hardware van de processor! Je kan immers niet verwachten dat een lopend programma zelf zal checken of hij verder kan gaan. Ook kan het OS er niet van uitgaan dat elk programma in een redelijke tijd stopt. Het OS moet op elk moment een programma kunnen onderbreken. Anders zou een oneindige lus volledig beslag leggen op je processor zonder dat je er iets aan kan doen, behalve dan de computer herstarten. Let op: het OS is ook niets meer dan een programma. Er is geen big brother in je computer die toekijkt wat de processor doet. Controle over het aktieve proces wordt verkregen door interrupts. Om toe te laten op gelijk welk ogenblik sprongen tussen toepassingsprogramma en besturingssysteem te maken bevatten processoren een hardwareschakeling waardoor een programma kan onderbroken worden door middel van een interrupt. Vervolgens bepaalt de interrupt handler welk programma uitgevoerd moet worden. Aan de hand van de oorsprong van de interrupt veroorzaakt deze een sprong naar het gewenste programma. De interrupt handler speelt dus een centrale rol en vormt dan ook het hoofdbestanddeel van de kern van moderne besturingssystemen. Jan Lemeire Pag. 23 / 55

Threads van processen main(){ thread.start();...... } Hoofdthread Process Zijthread run(){...... } Eén programma kan bestaan uit meerdere threads. Elke thread voert een sequentie van instructies uit. Een sequentie kan je zien als een draad, vandaar de benaming. Vele moderne toepassingen zijn zelf opgebouwd uit een groot aantal onafhankelijke threads die simultaan uitgevoerd worden. Het tekstverwerkingsprogramma Word bv. gebruikt verschillende threads om teksten en figuren op het scherm te tonen, zodanig dat wanneer men snel door een tekst wenst te lopen men niet hoeft te wachten op het tekenen van alle figuren. Een andere thread zal tegelijkertijd je taalfouten opsporen (de spelling checker). Jan Lemeire Pag. 24 / 55

Threads van je project Niet in cursus Hoofdthread Proces Thread voor afhandelen events Thread voor timer main(){ Jframe frame = new Jframe(); frame.show();... } Hoofdthread doet niets meer Windows do{ Wacht op event Bepaal broncomponent Roep Listeners op actionperformed(){... timer.start();... } Uw code } while (frame is shown); Maar 1 GUI-thread: kan maar 1 actie/event tegelijk afhandelen!!! Windows For(elke x ms){ Jan Lemeire Pag. 25 / 55 } Aparte thread voor spellus actionperformed(){......... } Uw code

Unix & Linux UNIX operating system: zoals mainframe initieel bestemd voor bedrijfscomputers User moet inloggen Heeft eigen files op server (in zijn home) Enkel administrator kan dingen aan systeem veranderen Linux: Open Source-versie van UNIX Open Source volgt de GNU-regels: de code mag vrij (gratis) gebruikt worden zolang er geen geld voor gevraagd wordt Apple gebruikt nu ook Unix-versie Android van Google is java op Linux Conclusie: in de consumentenmarkt is het Windows of Linux. Jan Lemeire Pag. 26 / 55

Applets

Java applets Niet in boek Niet te kennen Kan je toevoegen aan html-webpagina s <applet code="be.ac.vub.ir.util.jappletwithpanel archive="../causallearningwithkde.jar" height="360" width="900"> <param name="panel" value="be.ac.vub.ir.statistics.estimators.kde2dpanel" > </applet> Steek al je files in een jar-file In Eclipse: File menu -> export -> Java -> Jar file Je browser heeft een java-console waarin de System output komt (System.out & System.err) Jan Lemeire Pag. 28 / 55

Voorbeeld import javax.swing.japplet; public class CannonDemoApplet extends JApplet { public void init(){ String opt = getparameter("option"); if (opt!= null && opt.equals("ammo")) getcontentpane().add(new CannonPanel(true)); else getcontentpane().add(new CannonPanel(false)); } } Jan Lemeire Pag. 29 / 55

Opgelet Zorg dat beeldjes en audiofiles ook in de jar komen Zet ze bij je packages Laden van beeldjes: zie website Jan Lemeire Pag. 30 / 55

JApplet De browser communiceert met de applet via public void init( ) initializes variables and objects Voeg GUI componenten toe aan contentpane: getcontentpane().add() public void paint( Graphics g ) to draw screen public void start() called when the applet is visible. It is called after the init method and each time the applet is revisited in a Web page. public void stop() called when applet is no longer visible public void destroy() when hosting window is closed (exit). Overschrijf methodes als nodig Jan Lemeire Pag. 31 / 55

Static in java denken in objecten

p34 Objecten Hebben elk hun eigen attribuutwaarden, niet static dus Jan Lemeire Pag. 33 / 55

Handige van static Je hebt geen referentie naar het object nodig Referenties naar object: zie pagina 16-17 van de cursus Hoofdstuk 1 kan nu van pas komen! Statische methode Math.sin(x) kan je overal oproepen Als niet-statisch: je moet een Math-object aanmaken Statische variabele kan je overal oproepen: aantaliteraties (zie pagina 36 van de cursus) Jan Lemeire Pag. 34 / 55

Probleem met static Vanuit object kan je static dingen oproepen, maar niet omgekeerd: vanuit static kan je geen objectattributen of methodes oproepen van een gewoon object!! Compiler (Eclipse) zal een fout geven Cannot make a static reference to the non-static method Voorbeeld: statische methode roept gewone method op Dan moet je alles static maken en loopt het fout (Of je moet statische referenties bij gaan houden ) Niet doen dus Als je dit tegen komt is het foutief gebruik van static Jan Lemeire Pag. 35 / 55

Wanneer static te gebruiken? Zo weinig mogelijk Algemene functies, die niets aan een object veranderen Voorbeeld: berekenen gemiddelde, hoek ofzo Als je een object wilt veranderen gaat het fout (oproepen nietstatische variabele Algemene, globale variabelen 1 waarde die duidelijk algemeen moet zijn over alle objecten heen Voorbeeld: teller, mode van je GUI Als je functie een 2 e waarde moet teruggeven Kan dus niet in Zie cursus p. 36 (aantaliteraties) Jan Lemeire Pag. 36 / 55

Niet kennen: 7.7 & 7.8 AVL-bomen

Profiling & linking

??????

Theorema van Bayes Thomas Bayes 1701-1761 A posteriori geloof in hypothese Bevestiging (>1) of ontkrachting (<1) van hypothese A priori geloof in hypothese Jan Lemeire Pag. 41 / 55

Hoofdstuk 9 Hashing

p. 131 Hashing Probleem: iets terugvinden in een collectie gegevens Is in feite een functie: Input: object Output: plaats in geheugen Voor arrays, linked lists of bomen doen we dit met het doorploeteren van de datastructuur Maar waarom niet via een echte functie? hashfunctie Jan Lemeire Pag. 43 / 55

Hashfunctie Index = hashfunctie(object) Bepaalt waar object moet komen in array hashfunctie hashtabel java 3 koffie 8 thee 11 java koffie thee O(0) tijd, onafhankelijk van de grootte van de array Jan Lemeire Pag. 44 / 55

Enige probleem met hashing: botsingen hashfunctie hashtabel java 3 koffie 8 thee 11 jana 3 java jana??? koffie thee goede hashfunctie maakt deze kans klein Vb: java & jana botsen omdat enkel de eerste 2 letters gebruikt worden ( modulo operatie) beter is om alle letters te laten meetellen Perfecte hashfunctie: kans is gelijk aan de kans op toevallige botsing Jan Lemeire Pag. 45 / 55

Oplossing 1: lijst Alle elementen met zelfde index in lijst Bvb linked list hashfunctie hashtabel java 3 koffie 8 thee 11 java koffie thee jana 3 jana Jan Lemeire Pag. 46 / 55

Oplossing 2: alternatieve index lineaire berekenen h i = (hash(sleutel) +i) MOD n Nadeel: de bezette plaatsen concentreren zich in blokken kwadratische open adressering h i = (hash(sleutel) +i 2 ) MOD n Voorbeeld Key h0 = Hash(Key) 4215 1212 7220 8219 211 211 213 211 h 1 = h 0 + 1 h 2 = h 0 + 2 h 3 = h 0 + 3 (lineair) 212 212 213 214 215 h 2 = h 0 + 2 2 (kwadratisc h) Jan Lemeire Pag. 47 / 55

Nadelen hashing 1. Statische karakter van de datastructuur Array kan niet uitgebreid worden, want hashfunctie moet dezelfde blijven 2. Elementen staan ongeordend in lijst In volgorde printen kan niet 3. Verwijderen van elementen is moeilijk Kan problemen geven bij botsingen Linked lists: OK Alternatief adres: als 1e element verwijderd, hoe weten we dat volgende elementen op alternatieve plaats staat Mogelijke oplossing: verwijderde objecten aanduiden met vlag Jan Lemeire Pag. 48 / 55

Hashcode: in Java Object protected Object clone() Creates and returns a copy of this object. boolean protected void Class<?> int void void String void void void equals(object obj) Indicates whether some other object is "equal to" this one. finalize() Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. getclass() Returns the runtime class of this Object. hashcode() Returns a hash code value for the object. notify() Wakes up a single thread that is waiting on this object's monitor. notifyall() Wakes up all threads that are waiting on this object's monitor. tostring() Returns a string representation of the object. wait() Causes the current thread to wait until another thread invokes the notify() method or the notifyall() method for this object. wait(long timeout) Causes the current thread to wait until either another thread invokes the notify() method or the notifyall() method for this object, or a specified amount of time has elapsed. wait(long timeout, int nanos) Causes the current thread to wait until another thread invokes the notify() method or the notifyall() method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed. Java geeft default hashcode, overschrijf indien nodig Jan Lemeire Pag. 49 / 55

Mappen

p. 134 Mappen of dictionaries Linken object van type A aan objecten van type B. Opzoeken gebeurt op A-objecten, dus A best gesorteerd Voorbeeld: Ida, Jennifer Laurent, Maarten Manuka, Stani Mitichashvili, Tornike Nguyen, Kim Pelicaen, Erik Perez Sotomayor, Lucia Oprolbare brug Ultragrabber Moving Tower Ahmedabad piramide trap Villa Savoye achthoekstructuur Origami student key project value Jan Lemeire Pag. 51 / 55

Java map Interface Map<K,V> Met Type Parameters: K - the type of keys maintained by this map V - the type of mapped values Map<Student, String> map; Jan Lemeire Pag. 52 / 55

Map methodes void clear() Removes all of the mappings from this map (optional operation). boolean containskey(object key) Returns true if this map contains a mapping for the specified key. boolean containsvalue(object value) Returns true if this map maps one or more keys to the specified value. Set<Map.Entry<K,V entryset() >> Returns a Set view of the mappings contained in this map. boolean equals(object o) Compares the specified object with this map for equality. V get(object key) Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key. int hashcode() Returns the hash code value for this map. boolean isempty() Returns true if this map contains no key-value mappings. Set<K> keyset() Returns a Set view of the keys contained in this map. V put(k key, V value) Associates the specified value with the specified key in this map (optional operation). void putall(map<? extends K,? extends V> m) Copies all of the mappings from the specified map to this map (optional operation). V remove(object key) Removes the mapping for a key from this map if it is present (optional operation). int size() Returns the number of key-value mappings in this map.

Implementaties van Java map TreeMap en HashMap Tree of Hashtabel Map<String, String> map; of map = new TreeMap<String, String>(); map = new HashMap<String, String>(); Cf. TreeSet en HashSet implementaties van de Set interface Jan Lemeire Pag. 54 / 55

Volgende week: geen les 4 & 11 mei: internet Neem laptop mee