1 Inf1000 (Uke 10) Oppgaveløsning. Hashmap Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap.

Slides:



Advertisements
Liknende presentasjoner
12.Studienreise nach Finnland,
Advertisements

Trykk på mus eller tastatur for neste bilde…
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
Litt mer om PRIMTALL.
Høgskolen i Oslo Webprogrammering Grunnleggende PHP.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Kontrollstrukturer (Kapittel 3)
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Objektorientert programmering i PHP del 2
Java 14 Et eksempel fra bioinformatikk: analyse av biologiske sekvenser Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
IS-102 Klassedefinisjoner
Oblig4 - forklaringer Arne og Ole Christian.
Eiendomregister mars 2002 Arne Maus. import java.util.*; import inf101.*; /* Klasse med main() som starter hele programmet */ class EiendomsregisterMain.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
En gang til!? .
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Skriv om slik at setningene betyr omtrent det samme
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
1 Arrayer og form(ularer) (Kapittel 4). 2 Mål  Forstå assosiative og superglobale arrays  Kunne behandle webformularer (forms)  Kjenne forskjellen.
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 3 Mer om uttrykk Terminal I/O Forgreninger
Java 11 Programmering med og uten objekter: hva er forskjellen?
morild.org en interaktiv nettjeneste i ti år Mer enn 1000 spørsmål
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
INF1000 (Uke 13) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Kapittel 1, oppgave i) Sett inn preposisjoner eller adverb som passer.
Dagligbankundersøkelsen Fakta Dagligbankundersøkelsen intervju Befolkning 15 år + TNS Gallup Forfatter Bente Pettersen Roar Thorvaldsen.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF1000 (Uke 12) Sortering og eksamensoppgaver Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
INF1000 (Uke 11) Programmering
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

1 Inf1000 (Uke 10) Oppgaveløsning. Hashmap Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap Are Magnus Bruaset og Arild Waaler Institutt for informatikk Universitetet i Oslo

2 To måter å programmere på Programmering uten objekter  Var fokus i starten av kurset  Vi lager ikke objekter av klassene  Alle variable og metoder er deklarert som static  Begrepsmessig enkelt, men lite egnet for større programmer Programmering med objekter:  Er fokus for resten av kurset (og eksamen).  Vi lager objekter av klassene (noen eller alle)  Variable og metoder er vanligvis ikke deklarert som static  Begrepsmessig noe mer komplisert, men mye bedre egnet for større programmer

3 Eksempel på programmering uten objekter class VolumBeregning { static double pi = 3.14; static int maxAntall = 10; public static void main (String [] args) {... } static double finnVolum(double radius) {... } static int finnSum(int k) {... } Alle variable er deklarert som static Alle metoder er deklarert som static

4 Eksempel på programmering med objekter class StudentRegister { public static void main (String [] args) {... } class Student { String navn; String fnr; void init() {... } String finnNavn() {... } Variable er ikke deklarert som static (vanligvis) Metoder er ikke deklarert som static (vanligvis)

5 Organisering av veldig små programmer  I veldig små programmer (noen få linjer) kan all programkode ofte ligge i main-metoden. Dette blir da naturlig nok programmering uten objekter (av egendefinerte klasser). import easyIO.*; import java.io.*; class VeldigLiteProgram { public static void main (String [] args) { In tast = new In(); System.out.print("Gi et filnavn: "); String fnavn = tast.inLine(); if (new File(fnavn).exists()) { System.out.println("Filen fins"); } else { System.out.println("Filen fins ikke"); }

6 Organisering av alle andre programmer  I alle andre programmer bør main-metoden kun brukes til å få igang programmet. Da lager vi som hovedregel objekter av alle andre klasser enn den som inneholder main-metoden. Eksempel: class MittProgram { public static void main (String [] args) { Flyreservasjon fr = new Flyreservasjon(); fr.ordreløkke(); } class Flyreservasjon { void ordreløkke() {... }

7 Variant  Det er mulig å slå sammen de to klassene på forrige foil til en klasse: class MittProgram { public static void main (String [] args) { MittProgram mp = new MittProgram(); mp.ordreløkke(); } void ordreløkke() {... }  Da lager vi ett enkelt objekt av klassen med main-metoden, og bortsett fra oppstarten i main-metoden foregår programeksekveringen i objektet.  En smakssak om man velger å gjøre det slik, eller slik som på forrige foil.

8 Initialisering av variable i et objekt class Person { String navn; String fnr; } Når vi har laget et objekt (med new) ønsker vi normalt å gi variablene i objektet fornuftige verdier med en gang. Noen muligheter:  Sett verdiene til objektvariablene direkte med prikk-notasjon: Person p = new Person(); p.navn = ”Petter”; p.fnr = ” ”;  Lag en init-metode i klassen: Person p = new Person(); p.init(”Petter”, ” ”);  Benytt en konstruktør: Person p = new Person(”Petter”, ” ”); Anta at programmet vårt inneholder denne klassen:

9 Konstruktører - repetisjon En konstruktør er en spesiell type objektmetode som du kan bruke for å sikre at objektet starter sitt liv med fornuftige verdier i objekt- variablene. Konstruktører  har alltid samme navn som klassen de ligger i  utføres automatisk når et objekt opprettes med new  har ingen returverdi, men skal ikke ha void foran seg  overlastes ofte, dvs det er ofte flere konstruktører i en og samme klasse, hvor konstruktørene skiller seg fra hverandre ved antall parametre og/eller typen på parametrene.

10 Eksempel class TestSirkel { public static void main (String [] args) { Sirkel s1 = new Sirkel(); System.out.println("Radius: " + s1.radius); Sirkel s2 = new Sirkel(5.0); System.out.println("Radius: " + s2.radius); } class Sirkel { double radius; Sirkel () { radius = 1.0; } Sirkel (double r) { radius = r; } Konstruktør 1 Konstruktør 2

11 Når det ikke er noen konstruktør class Sirkel { double radius; Sirkel () { }  Når en klasse ikke inneholder noen konstruktør, vil Java selv føye på en "tom konstruktør" uten parametre når programmet kompileres. Dermed er følgende to klassedeklarasjoner ekvivalente:  Merk: dersom klassen inneholder en eller flere konstruktører, vil Java ikke føye på en "tom konstruktør" uten parametre. class Sirkel { double radius; }

12 Oppgave: virker dette? Lar dette programme seg kompilere og kjøre? class Oppgave1 { public static void main (String [] args) { Bil b = new Bil(); } class Bil { String regnr; Bil (String regnr) { this.regnr = regnr; } SVAR: nei!

13 Finn- og sett-metoder Når man skal lage "virkelige" programmer er det vanlig å  Deklarere alle objektvariable som private  Bruke finn- og sett-metoder for å endre på objektvariable class Eksempel { public static void main (String [] args) { Student stud = new Student(); stud.settNavn("Petter"); System.out.println(stud.finnNavn()) } class Student { private String navn; private String fnr; void settNavn(String navn) {this.navn = navn;} String finnNavn() {return this.navn;} }

14 Rollefordeling i større programmer En klasse som inneholder alt Klasse med main-metode Inneholder main-metoden. Gjør stort sett ikke annet enn å få programmet igang. Klasse med ordreløkke Holder på data-strukturen. Inneholder evt ordreløkke, og metoder som kalles fra denne. Øvrige klasser som inngår som del av datastrukturen

15 Noen tips  Legg ikke annen programkode i main enn det som skal til for å få igang programmet (typisk: lage et objekt og kalle på en metode i dette), unntatt i bittesmå programmer.  I main kan du velge å lage et objekt av klassen som main ligger i - eller et objekt av en annen klasse. I kurset bruker vi stort sett siste variant.  Metoden som kalles fra main er typisk den som er ansvarlig for programkontrollen (f.eks. en ordreløkke), eller en del av den.  Programkontrollen kan ligge i en konstruktør eller i en annen metode (f.eks. void ordreløkke() ). I kurset gjør vi stort sett det siste.  Råd: bestem deg for hvilken organisering du liker best og hold deg til den når du skriver dine egne programmer - så slipper du å kaste bort tid på å velge hver gang du skal lage et nytt program.

16 Klassevariable og objektvariable Bare definert i objekter av en klasse. Hvert objekt har sitt eget sett med objektvariable. Objektvariable: Definert selv om det ikke er laget objekter av klassen. Alle objekter av klassen deler de samme klassevariablene. Klassevariable:

17 Objektvariable class Student { String navn; String fnr; } navn: fnr : navn: fnr : navn: fnr : new Student(); Objektvariable er variable på klassenivå som ikke er deklarert som static. For hvert nytt objekt får vi et fullt sett med nye objektvariable:

18 class Student { String navn; String fnr; } Objektvariablenes levetid Disse variablene blir deklarert når vi lager et objekt av klassen ved å skrive new Student(), og de lever så lenge objektet lever. Objektvariablene blir til når objektet blir til (med new) Objektvariablene lever så lenge objektet finnes

19 Klassevariable class Person { static int maxAlder=100; int alder=0; String navn=""; } alder: 0 navn : "" alder: 0 navn : "" alder: 0 navn : "" new Person(); maxAlder: 100 når klassen refereres første gang Klassevariable er variable på klassenivå som er deklarert som static. Vi får aldri mer enn ett sett av klassevariable.

20 Klassevariablenes levetid class Person { static int maxAlder = 100; int alder; void metode() {...} } Denne variabelen blir deklarert når klassen Person blir referert til for første gang under kjøringen av programmet. Variabelen lever helt til programmet avsluttes. Første gang klassen Person blir referert til = første gang programeksekveringen "møter på" Person-klassen, f.eks. :.... new Person() Person.maxAlder Person.metode().....

21 Klassemetoder (static-metoder)  Definert selv om det ikke er laget noen objekter av klassen  Kan ”ses” av alle objekter av klassen  Kan brukes av andre gjennom dot-notasjon:.metode(...)  Har ikke tilgang til objektvariable eller objektmetoder Objektmetoder  Bare definert i objekter av klassen  Kan ”ses” av objektet som metoden befinner seg i  Kan brukes av andre gjennom dot-notasjon:.metode(...)  Har tilgang til alle variable (både klassevariable og objektvariable) og alle metoder (både klassemetoder og objektmetoder) Klassemetoder og objektmetoder

22 Ole lærer å programmere og har laget programmet til venstre. Hvorfor skriver programmet følgende ut på skjermen? Hvordan skal vi endre det? class StudentRegister { public static void main (String [] args) { Student s1, s2; s1 = new Student(); s1.init("Torjus", "S25332"); s2 = new Student(); s2.init("Vilde", "S36336"); s1.skrivUt(); s2.skrivUt(); } class Student { static String navn; static String studId; static void init(String n, String s) { navn = n; studId = s; } static void skrivUt() { System.out.println("Navn: " + navn); System.out.println("StudId: " + studId); } Oppgave Navn: Vilde StudId: S36336 Navn: Vilde StudId: S36336

23 Å lage en fornuftig datamodell  Med objekter kan vi ofte organisere våre data bedre. Eksempel: class Person { String navn; String fnr; int tlfnr; } Person [] personreg = new Person[100]; Informasjonen knyttet til en bestemt person er samlet i et objekt. Bedre organisering – særlig når det er mye data å holde orden på. String [] navn = new String[100]; String [] fnr = new String[100]; int [] tlfnr = new int[100]; Informasjonen knyttet til en bestemt person er splittet opp i tre arrayer.

24 Å lage en fornuftig datamodell (II)  Med objekter kan vi samle data og operasjoner på dem. class Student {... data om studenter student-metoder... } class Ansatt {... data om ansatte ansatt-metoder... } class Kurs {... data om kurs kurs-metoder... } Metoder og data som hører sammen er samlet. Lett å se hvilke metoder som jobber på hvilke data (modularisering av koden). Lett å kopiere alt som har med personer å gjøre (data+metoder) til andre programmer (gjenbruk).... data om studenter data om ansatte data om kurs student-metoder ansatt-metoder kurs-metoder... Her ligger alle data og alle metoder samme sted

25 Å lage en fornuftig datamodell (III) Eksempel: i oblig 3 skulle du holde orden på  en rekke studenter class Student  en rekke hybler class Hybel  et hybelhus (potensielt flere) class Hybelhus En objektorientert løsning (med klassene over) sørger for at  variabler og metoder som logisk hører sammen ligger også samlet i programkoden  variabler og metoder som ikke har noe med hverandre å gjøre holdes godt atskilt i programkoden Analogi: hjemme hos deg selv, plasser du verktøy, bestikk og CD- plater i samme skuff? Sannsynligheten er stor for at du allerede tenker objektorientert.

26 Valg av datamodell: eksempel Eksempel: Du har gitt en fil med opplysninger om hvor mange registrerte tilfeller det var av tre ulike sykdommer i Norge hvert av årene : INFLUENSA KYSSESYKE MENINGITT Hvordan er det naturlig å modellere dette?

27 Noen muligheter  Forslag 1: Gruppere tellinger relatert til samme sykdom class Sykdom { String sykdomsNavn; int[] antallTilfeller = new int[51]; }  Forslag 2: Gruppere tellinger foretatt samtidig class Aarsdata { int antInfluensa; int antKyssesyke; int antMeningitt; }  Forslag 3: Ingen gruppering - tre arrayer int[] influensatilfeller = new int[51]; int[] kyssesyketilfeller = new int[51]; int[] meningittilfeller = new int[51];  Forslag 4: Ingen gruppering – en 2D-array int[][] sykdomstilfeller = new int[3][51]; Beste datastruktur avhenger i stor grad av hva du skal bruke dataene til!

28 Valg av datamodell: eksempel 2 Anta at du skal lese en fil med opplysninger om en rekke værstasjoner, der hver linje gir informasjon om en enkelt værstasjon: 4780 GARDERMOEN202 ULLENSAKER AKERSHUS RØROS 628 RØROS SØR-TRØNDELAG OSLO-BLINDERN 94 OSLO OSLO GEILO-GEILOSTØLEN 810 HOL BUSKERUD..... En opplagt løsning vil da være å gruppere dataene stasjonsvis: class Stasjon { String nummer; String navn; double høyde; String kommune;. String fylke; } For her linje vi leser fra filen lager vi da et nytt objekt av klassen Stasjon, og fyller objektet med verdiene fra filen

29 Valg av datamodell: eksempel 2 forts. Anta at det for hver værstasjon også er gitt daglige værmålinger for et halvt år: Hvordan modellerer vi disse dataene? Svaret er mindre opplagt. stasjon dag mnd maxvind nedbør mintemp maxtemp

30 Noen muligheter  Forslag 1: Ingen gruppering class Stasjon { double[] maxvind; double[] nedbør; double[] mintemp; double[] maxtemp;... }  Forslag 2: Gruppere målinger utført samtidig (dvs gruppere etter dag) class Dagdata { double maxvind; double nedbør; double mintemp; double maxtemp; } class Stasjon { Dagdata[] dagdata; }

31 Noen muligheter forts.  Forslag 3: gruppere etter både måned og dag class Dagdata { double maxvind; double nedbør; double mintemp; double maxtemp; } class Maanedsdata { Dagdata[] dagdata = new Dagdata[31]; int antDager; // Antall dager i måneden } class Stasjon { Maanedsdata[] mdata = new Maanedsdata[6]; }

32 Hvordan programmere med objekter? Grunnregel: Et objekt skal inneholde data og operasjoner som naturlig hører sammen. Et objekt kan representere:  et objekt i problemdomenet: En konto, en bil, en student, et lån, en eiendom (brukes til å definere en datamodell – en "modell av virkeligheten")  et objekt av mer programteknisk art: Et skjermvindu, en fil, en tekststreng, en tabell (slike objekter er vanligvis ikke del av datamodellen – det er bare en effektiv måte å gruppere sammen programelementer som hører sammen)

33 HashMap  Brukes til å holde orden på en samling objekter  Alternativ til arrayer  Akkurat som for arrayer kan man:  legge inn nye objekter  finne tilbake til et objekt som er lagt inn  fjerne et objekt som er lagt inn  løpe gjennom alle objektene i tabellen  Viktig forskjell mellom arrayer og HashMap:  I en array legger vi inn objekter i en bestemt posisjon, og vi må gå tilbake til denne posisjonen/indeksen når vi senere skal se på objektet. Indeksen er et heltall mellom 0 og length-1.  I en HashMap oppgir vi en bestemt nøkkel (vanligvis en tekststreng) når vi legger vi inn et nytt objekt, og vi oppgir denne nøkkelen når vi senere skal se på objektet. Dvs. indeksen er en tekststreng.

34 import java.util.*; class BrukAvHashMap { public static void main (String[] args) { HashMap h = new HashMap(); String fnr1 = ” "; Person per1 = new Person(fnr1, "Harald Olsen"); h.put(fnr1, per1); String fnr2 = ” "; Person per2 = new Person(fnr2, ”Lena Torsen"); h.put(fnr2, per2); Person p = (Person) h.get(” ”); } class Person { String navn; String adresse; Person(String navn, String adresse) { this.navn = navn; this.adresse = adresse; } Eksempel på bruk av HashMap Importer pakken java.util Opprett en HashMap Legg inn Person-objekt i HashMap’en Hent Person-objekt fra HashMap’en

35 Opprette en HashMap  I starten av programmet: import java.util.*; Dette importerer pakken java.util hvor bl.a. klassen HashMap ligger.  I klassen eller metoden som skal bruke HashMap'en: HashMap h = new HashMap(); NB: Hvis tabellen skal brukes av flere metoder i en klasse, deklareres variabelen ovenfor i starten av klassen (som en objektvariabel). Hvis tabellen kun skal brukes av en enkelt metode, er det naturlig å deklarere variabelen ovenfor inni den aktuelle metoden.

36 Legge inn objekt i HashMap  Et hvilket som helst objekt i Java kan legges inn i en HashMap  Når vi legger et objekt inn i HashMap'en, må vi samtidig oppgi en nøkkel, dvs en tekststreng som entydig identifiserer objektet.  Vi trenger denne nøkkelen dersom vi senere skal finne eller fjerne objektet i HashMap'en.  Eksempel: String fnr = ” ”; Person p = new Person(fnr, “Kari Olsen”); h.put(fnr, p); Her lager vi først et Person-objekt (med passende argumenter) og legger det deretter inn i tabellen med fødselsnummeret som nøkkel.

37  Dersom vi legger inn flere objekter med samme nøkkel, er det bare det sist innlagte objektet som blir liggende i tabellen (de andre overskrives): Person p1 = new Person(...); Person p2 = new Person(...); Person p3 = new Person(...); String navn = "Jens"; h.put(navn, p1); // p1 legges inn h.put(navn, p2); // p2 legges inn og p1 overskrives h.put(navn, p3); // p3 legges inn og p2 overskrives  Noen ganger må vi konstruere en nøkkel ut fra flere variable for å få entydighet: String lengdegrad = "67.3"; String breddegrad = "53.3"; String posisjon = lengdegrad + ";" + breddegrad; Fjelltopp fjell = new Fjelltopp(posisjon, “Bjørnefjell”); h.put(posisjon, fjell);

38 Hente objekt fra HashMap  For å hente et objekt med utgangspunkt i nøkkelen: // Vi vil finne en person ut fra fødselsnummeret: Person p = (Person) h.get(fnr);  Legg merke til at vi i starten må skrive i parentes navnet på klassen som objektet tilhører - i dette tilfellet klassen Person.  Årsaken er at HashMap'en ikke holder rede på hvilken klasse objektene som legges inn har - bare at det er objekter. Når objektene hentes ut må vi derfor "minne Java på" hvilken klasse objektet var av (dette er egentlig et møte med en avansert og svært nyttig mekanisme i objektorienterte språk som kalles arv og som blir tatt opp i INF1010).  Merk: å hente et objekt fra en HashMap slik som over medfører ikke at objektet fjernes fra HashMap'en.

39 Fjerne objekt fra HashMap  For å fjerne et objekt med gitt fødselsnummer som nøkkel: h.remove(fnr);  Dersom det ligger et objekt i HashMap'en med den gitte nøkkelen, blir objektet fjernet og setningen ovenfor returnerer med en peker til objektet som fjernes.  Dersom det ikke ligger et objekt i HashMap'en med den gitte nøkkelen, returnerer setningen ovenfor verdien null.