Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.

Slides:



Advertisements
Liknende presentasjoner
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.
Advertisements

Tabeller av objekter Klassen ArrayList
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 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.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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.
Samarbeid mellom objekter
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 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.
Java 14 Et eksempel fra bioinformatikk: analyse av biologiske sekvenser Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
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
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
1 Kap 08 Kø. 2 Kø - Definisjon En kø (eng queue) er en lineær struktur hvor elementer kan innsetttes kun i den ene enden av listen, kalt bak, og fjernes.
Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 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.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 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 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 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.
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 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
Java 11 Programmering med og uten objekter: hva er forskjellen?
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.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
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.
INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)
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.
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
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
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.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringContainerklasser.2 Mange objekter.
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
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.
Iterator i Java boolean hasNext() E next() void remove()
Utskrift av presentasjonen:

Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17 Datastrukturer og algoritmeteori Graferside 2 Listerside 3-6 Java API: Collection, List og LinkedListside 7-9 Køside 10 Stakkside 11 Rekursjonside 12 Trær inkl. binære søketrærside Java API: Map og TreeMapside Hashtabellerside Iteratorerside 26

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 2 Grafer Anvendelser –visualisering av datanettverk –logistikk –formell kartlegging av et objektorientert programsystem node kant En urettet graf En rettet og vektet graf

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 3 Lister Dataene ordnes sekvensielt på tilsvarende måte som i en tabell Aktuelle operasjoner på liste –Sett inn et element i listen: først, sist eller på en bestemt posisjon. –Fjern et element fra listen. –Gå gjennom alle elementene i listen. Lister i forhold til tabeller –Begge datastrukturene holder orden på dataene i en bestemt rekkefølge. –Størrelsen på en liste er helt dynamisk, den endres ved at elementer settes inn og tas ut. En tabell kan ikke endre størrelse etter at den er opprettet. –Å finne et bestemt element i en liste kan ta tid på grunn av at en alltid må gå inn fra enden av listen. Ethvert element i en tabell kan aksesseres direkte ved hjelp av indeksen. Enkeltlenket listeDobbeltlenket liste

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 4 Noen listeoperasjoner i mer detalj Å sette inn et element i slutten av listen Å sette inn et element på en bestemt plass i listen (foran *) * * Hvorfor kan vi ikke gjøre de to operasjonene i motsatt rekkefølge?

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 5 Eksempel, en liste med navn class NavneElement { private NavneElement neste; private String navn; public NavneElement(String startNavn) { navn = startNavn; } public NavneElement(String startNavn, NavneElement startNeste) { navn = startNavn; neste = startNeste; } public String finnNavn() { return navn; } public NavneElement finnNeste() { return neste; } public void settNavn(String nyttNavn) { navn = nyttNavn; } public void settNeste(NavneElement nyNeste) { neste = nyNeste; } NavneElement neste navn finnNavn finnNeste settNavn settNeste neste PerLiseEliAnne null

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 6 Klassen Navneliste NavneListe førsteElement skrivUtAlleNavn settInnNavnTilSlutt søkEtterNavn slettNavn (toString()) Vis programliste 17.2 og 17.3 side Gjør oppgavene side 563

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 7 Interface java.util.Collection Fellestrekk for klasser som implementerer dette interfacet: –en samling elementer av forskjellige typer –metoder (husk at vi foreløpig ikke har noen implementasjoner!) public boolean add(Object add) public boolean contains(Object obj) public boolean containsAll(Collection annenSamling) public boolean remove(Object obj) public boolean removeAll(Collectiön samling) public int size() Samlinger kan klassifiseres etter to parametre –er duplikater tillatt? –er elementene ordnet? Duplikater ikke tillatt OrdnetIkke ordnet Duplikater tillatt Liste Hashtabell (selve tabellen, i mange tilfeller) Multimengde Mengde

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 8 Interfacet java.util.List List er sub-interface til Collections: –Elementene skal være ordnet List krever flere metoder implementert: –public void add(int posisjon, Object obj) –public Object set(int posisjon, Object obj) –public Object remove(int posisjon) –public Object get(int posisjon) Virker det kjent? Klassen ArrayList implementerer dette interfacet. Kan gjerne ha identiske data i en liste, og kanskje til og med flere referanser til det samme objekt (som i ArrayList). Implementasjonen av add() bestemmer slike ting, det dikteres ikke av interfacet.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 9 Klassen java.util.LinkedList Implementerer List (og dermed også Collections) Skal ha den ytelsen som man kan vente av en dobbeltlenket liste Klassen tilbyr flere metoder enn det interfacet krever –public void addFirst() –public void addLast() –public Object removeFirst() –public Object removeLast() Gjør oppgaven side 565

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 10 Kø En kø er en ordnet samling med data hvor data settes inn og tas ut et bestemt sted. FIFO-kø –First In First Out Operasjoner –sett inn et element –ta ut et element import java.util.*; class FIFOKo { private LinkedList liste = new LinkedList(); public void settInnElement(Object objekt) { liste.addLast(objekt); } public Object taUtElement() { return liste.removeFirst(); } public int finnAntallElementer() { return liste.size(); }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 11 Stakk En stakk er en LIFO-kø (Last In First Out) import java.util.*; class Stakk { private LinkedList liste = new LinkedList(); public void settInnElement(Object objekt) { // ”push” liste.addLast(objekt); } public Object taUtElement() { // ”pop” return liste.removeLast(); } public int finnAntallElementer() { return liste.size(); } Gjør oppgaven side 567

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 12 Rekursjon Teknisk innebærer rekursjon at en metode kaller seg selv. For at dette ikke skal gjenta seg i det uendelige må enhver rekursjon ha et stoppkriterium. Eksempel: public int fakultet(int n) { if (n <= 1) return 1; // stopp-kriterium else return n * fakultet(n – 1); } Gjør oppgavene side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 13 Trær Et tre er et spesialtilfelle av en graf –kan ikke inneholde sykluser –må henge sammen –alltid eksakt én vei mellom to noder –én node defineres som rot –treet brer seg ut fra rota –en hvilken som helst node kan defineres som rot tre ikke et tre

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 14 Nodene i et tre rot blad foreldrenoder barnenoder

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 15 Binære søketrær Et tre der hver forelder har maksimalt to barn kalles et binærtre. Barna utgjør roten i høyre og venstre subtre. Til hver node i treet hører det data. –det venstre barnet sine data er ”mindre eller lik” forelderens data –det høyre barnet sine data er ”større enn” forelderens data venstre subtre Vis programliste 17.4 side BinaertSoekeTre rot toString settInnVerdi søkEtterVerdi

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 16 Klassen SubTre SubTre høyreTre venstreTre forelder verdi toString settInnVerdi søkEtterVerdi Vis programliste 17.5 side Vis testprogrammet side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 17 Binære søketrær i forhold til lenkede lister Søking etter data er mye raskere i et søketre enn i en lenket liste. –Søketiden i en lenket liste er i verste fall proporsjonal med antall elementer (= n) i listen. –Å søke i et binært søketre betyr å gå ned gjennom treet til vi finner rette objekt, eller vi når bunnen. Mye kortere! –Treet er balansert dersom det er mest mulig symmetrisk og rett. –Søket er mest effektivt dersom treet er balansert. –Det er mulig å vise at verst tenkelige søketid i et balansert tre er proporsjonal med log(n). –log(n) er alltid mindre enn n Å sette inn data tar lenger tid i et binært søketre enn i en liste. Gjør oppgaven side 576

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 18 Interface java.util.Map En avbildning (engelsk: map) ivaretar en kobling mellom nøkler og data. –Alle nøklene er forskjellige. –Hver nøkkel er koblet til eksakt én verdi. –Avbildningen skal gjøre det raskt å hente ut data når nøkkelverdien er gitt. Interface java.util.Map –Nøkler og data er objekter av vilkårlig type. –Dersom du forsøker å legge inn en nøkkelverdi som eksisterer fra før, vil nøkkelen knyttes til den nye dataverdien du legger inn. –Metoder: public Object get(Object nøkkel) public Object put(Object nøkkel, Object data) public Object remove(Object nøkkel)

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 19 Klassen java.util.TreeMap Klassen implementerer et binært søketre som holdes godt balansert Klassen implementerer Map, og også SortedMap: –public Object firstKey() –public Object lastKey() Nøklene må kunne sorteres –enten må en ”komparator” sendes inn som argument til konstruktøren, eksempel kollator fra side 301: TreeMap etTre = new TreeMap(java.text.Collator.getInstance()); –eller klassen som nøklene tilhører må implementere interfacet Comparable Eksempel, treet side 571 (lysbilde 15). –Tallene blir nøkler til nodene. –Vi lar dataene være personnavn.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 20 Vi prøver TreeMap class TreeMapTest { public static void main(String[] args) { TreeMap treEksempel = new TreeMap(); treEksempel.put(new Integer(15), "Ole"); treEksempel.put(new Integer(10), "Ingrid"); treEksempel.put(new Integer(28), "Åse"); treEksempel.put(new Integer(3), "Beate"); treEksempel.put(new Integer(14), "Tove"); treEksempel.put(new Integer(20), "Petter"); treEksempel.put(new Integer(16), "Anders"); treEksempel.put(new Integer(21), "Toril"); System.out.println("Innholdet i treet: " + treEksempel.toString()); String test = (String) treEksempel.get(new Integer(11)); if (test == null ) System.out.println("11 finnes ikke"); else System.out.println("11 finnes: " + test); test = (String) treEksempel.get(new Integer(10)); if (test == null ) System.out.println("10 finnes ikke"); else System.out.println("10 finnes: " + test); System.out.println("Laveste nøkkelverdi: " + treEksempel.firstKey()); System.out.println("Høyeste nøkkelverdi: " + treEksempel.lastKey()); } Kjøring: Innholdet i treet: {3=Beate, 10=Ingrid, 14=Tove, 15=Ole, 16=Anders, 20=Petter, 21=Toril, 28=Åse} 11 finnes ikke 10 finnes: Ingrid Laveste nøkkelverdi: 3 Høyeste nøkkelverdi: 28 Gjør oppgaven side 578

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 21 Hashtabeller En hashtabell skiller seg fra –et binært søketre ved at elementene ikke har noen innbyrdes ordning –en lenket liste ved at søk går raskere Brukes bl.a. i mange operativsystemer til å holde rede på filene i en katalog Nøklene plasseres i bøtter Bøttene –er som oftest ordnet –duplikater ikke tillatt Søk og innsetting går raskt –beregn riktig bøtte –søk etter verdien i den relativt korte listen i bøtta, eller –sett inn verdien, for eksempel til slutt i listen Lastfaktoren er lik forholdet mellom antall elementer og antall bøtter. –høy lastfaktor: lang søketid, god plassutnyttelse –lav lastfaktor: kort søketid, plasskrevende, mange bøtter med få elementer hashfunksjon nøkkelverdibøtteverdi

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 22 Eksempel på hastabell Hashfunksjon: Plukk ut siste siffer i nøkkelverdien. bøttenr. Hver nøkkelverdi kan f.eks svare til opplysninger om en person. Disse dataene er ikke vist på figuren.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 23 Klassen java.util.Hashtable Standardkonstruktøren lager 101 bøtter (lurt med primtall!). Rehashing foretas når lastfaktoren blir 0,75 –antall bøtter endres, og alle adresser beregnes på nytt Hver klasse kan ha sin egen hashfunksjon, hvis ikke arves implementasjonen av hashCode() fra klassen Object Klassen Hashtable implementerer interfacet Map med kjente metoder: –public Object get(Object nøkkel) –public Object put(Object nøkkel, Object data) –public Object remove(Object nøkkel)

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 24 Klassen som beskriver nøkkelen vist på lysbilde 22 class Ident { private int verdi; public Ident(int startVerdi) { verdi = startVerdi; } public int hashCode() { // Plukker ut siste siffer i tallverdien int potens = 10; while (verdi / potens > 10) potens *= 10; int rest = verdi % potens; while (rest > 10) { potens /= 10; rest %= potens; } System.out.println("Verdi " + verdi + " gir kode " + rest); // for testing return rest; } public String toString() { // nødvendig for at nøkkelen skal skrives ut riktig return "" + verdi; } public boolean equals(java.lang.Object obj) { // nødvendig for at søk skal bli riktig return ((Ident) obj).verdi == verdi; }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 25 Klientprogram som lager og prøver hashtabellen class HashTest { public static void main(String[] args) { Hashtable hashEksempel = new Hashtable(10); // 10 bøtter for å passe med figuren hashEksempel.put(new Ident(2), "Ole"); hashEksempel.put(new Ident(11), "Ingrid"); hashEksempel.put(new Ident(16), "Åse"); hashEksempel.put(new Ident(18), "Beate"); hashEksempel.put(new Ident(31), "Tove"); hashEksempel.put(new Ident(35), "Petter"); hashEksempel.put(new Ident(55), "Anders"); hashEksempel.put(new Ident(85), "Toril"); hashEksempel.put(new Ident(94), "Tomas"); hashEksempel.put(new Ident(108), "Svein"); System.out.println("Innholdet i hashtabellen: " + hashEksempel.toString()); String test = (String) hashEksempel.get(new Ident(11)); if (test == null ) System.out.println("11 finnes ikke"); else System.out.println("11 finnes: " + test); test = (String) hashEksempel.get(new Ident(6)); if (test == null ) System.out.println("6 finnes ikke"); else System.out.println("6 finnes: " + test); } Utskrift: Verdi 2 gir kode 2 Verdi 11 gir kode 1 Verdi 16 gir kode 6 Verdi 18 gir kode 8 Verdi 31 gir kode 1 Verdi 35 gir kode 5 Verdi 55 gir kode 5 Verdi 85 gir kode 5 Verdi 94 gir kode 4 Verdi 108 gir kode 8 Innholdet i hashtabellen: {108=Svein, 18=Beate, 16=Åse, 85=Toril, 35=Petter, 55=Anders, 94=Tomas, 2=Ole, 11=Ingrid, 31=Tove} Verdi 11 gir kode 1 11 finnes: Ingrid Verdi 6 gir kode 6 6 finnes ikke

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 17, side 26 Iteratorer En iterator hjelper oss å bla lineært gjennom en datastruktur Eksempel ArrayList liste = new ArrayList(); liste.add("a"); liste.add("b"); liste.add("c"); /*Fremgangsmåte 1 for å bla gjennom listen: */ Iterator i = liste.iterator(); while (i.hasNext()) { System.out.println(i.next()); } /*Fremgangsmåte 2 for å bla gjennom listen: */ for ( Iterator i2 = liste.iterator() ; i2.hasNext() ; ) { System.out.println(i2.next()); } Enumeration er et eldre (fremdeles mye brukt) alternativ til Iterator –metodenavn: hasMoreElements() og nextElement()