Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

Velkommen til Softwarekonstruktion
Februar 2005Sprog-nyheder i C# og VB1 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark.
C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.
1 Frameworks. 2 Plan Frameworks • Kollektioner • Input/output Nyt designmønster: Decorator.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Programmeringsteknologi: Lektion 1
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
Tietgen Skolen Syntaks: while ( betingelse for loop ) statement; Eksempel: int tal = 0; while ( tal/3 != 4 ) { System.Console.WriteLine(tal); tal = tal.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Abstrakte klasser og interfaces i Java
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Arrays ● Arrangere erklærede ens datatyper ● Giver mulighed for indeksering med tal ● Valgfri størrelse ved oprettelse ● Er integreret i sproget/compileren.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Datastrukturer og Collections Rasmus D. Lehrmann DM
Collectionklasser Ekstra materiale. Collections Motivation – hvorfor bruge collections? Realisering af en-til-mange relationer – Importer, erklær, initialiser.
Begreber og Redskaber 6. Plan for idag Tabeller Udvalgssortering, køretid Lidt mere om objekter Budskab: Køretid kan være et problem og bør løses med.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
MEC, DAIMIIntroJava AAU1 Crayon-objekter nu med loops og metoder.
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper: arrays, stakke, køer,
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN KbP/seminar2: design21 Kontraktbaseret programmering Seminar 2 Klassedesign: Immutable lister Queue Shallowcopy og alkvantoren.
Nedarvning.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Anvendelser I Leg og spil.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Blå gruppe: Søren, Alexander, Torben, Lasse. De 4 vigtige items: - Singelton - Override clone judiciously - Use interfaces only to define type - Prefer.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
Variabler, klassevariabler, identitet og lighed, collections
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Forelæsning Uge 5 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 12 – Torsdag
Forelæsning Uge 6 – Mandag
Parametrisering En kort introduktion.
Dog Sort Dogs For meget ansvar Låst til én måde at sortere på
Præsentationens transcript:

Begreber og Redskaber 5

Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning og sortering i datastrukturer. Krav: Objekter skal kunne sammenlignes. Datastrukturer: Lister, mængder, maps Operationer: søgning, sortering, mængde- operationer, min, max, gennemløb,..

Collections Datastrukturer: (interface) Algoritmer: (statiske metoder) Collection SetList SortedSet Map SortedMap Collections Arrays

Implementationer Set List Map SortedSet SortedMap TreeSetHashSet LinkedListArrayList HashMapTreeMap TreeSetTreeMap

Set - List - Map Set – mængde –Samling objekter – et objekt kan ikke være med flere gange List – liste –Samling objekter i en rækkefølge Map – tabel/afbildning –Samling objekter indiceret af andre objekter –Generalisering af lister (hvor index er tal)

Sammenligning interface Comparable public int compareTo(Object o) 0 større f.eks class Person implements Comparable{ String navn; public int compareTo(Object o){ return navn.compareTo(((Person) o).navn); } Person(String navn){this.navn=navn;} public String toString(){return navn;} }

Tabel som liste Brug algoritmerne: Person[] ps ={ new Person("Ham"), new Person("Hende"), new Person("Den anden"), new Person("En anden") }; List l = Arrays.asList(ps); p(l); Collections.sort(l);p(l); Collections.reverse(l);p(l); Collections.shuffle(l);p(l);

Uddata Tabel: [Ham, Hende, Den anden, En anden] Sort: [Den anden, En anden, Ham, Hende] Reverse: [Hende, Ham, En anden, Den anden] Shuffle: [En anden, Ham, Hende, Den anden]

Algoritmer: Arrays (Statiske)Operationer på almindelige tabeller int binarySearch(type[],type key) List asList(type[]) boolean equals(type[],type[]) int fill(type[],type val) void sort(type[]) void sort(type[],Comparator) type: Object, int, short, long, float, double, byte, char

Algoritmer: Collections int binarySearch(List,Object) Object max(Collection) Object min(Collection) void reverse(List) void shuffle(List) Set singleton(Object) List singletonList(Object) void sort(List) void sort(List,Comparator) void copy(List dest, List src)

Datastruktur: Collection add(Object) tilføj clear() fjern alle elementer contains(Object) undersøg om object er med isEmpty() undersøg om den er tom iterator() gør klar til gennemløb remove(Object) fjern element size() antal elementer toArray() lav tabel af samlingen

Set: Mængder add(Object) Tilføj – men kun hvis det ikke allerede er med addAll(Collection) Foreningsmængde removeAll(Collection) Mængdedifferens retainAll(Collection) Fællesmængde

List: Lister add(Object) Tilføj til slut i listen get(index) hent element set(index,Object) ændr object på plads index indexOf(Object) første index for object lastIndexOf(Object) subList(int from,int to) lav delliste addList(Collection) Object[] toArray();

Implementationer: Set Vælg mellem TreeSet og HashSet HashSet den foretrukne Elementer i tabel indiceret via hash- funktion –Tilgang til elementer meget hurtig –Vækst kan koste dyrt TreeSet Holdes som træstruktur – altid sorteret –Pladseffektiv

Implementationer: List Vælg mellem ArrayList og LinkedList ArrayList den foretrukne Liste holdes i tabel –Adgang til elementer er hurtig, –Vækst kan koste – dyrt at tilføje først i listen LinkedList Holdes som dobbelthægtet liste –Pladseffektiv –Adgang til elementer ret dyrt (med get og set)

Comparable interface Comparable{ int compareTo(Object o) } Objekter fra klasser der implementerer Comparable kan sammenlignes med andre. Man angiver en ”standard” ordning af sine objekter For String er det leksikalsk ordning

Comparator interface Comparator{ int compare (Object o1,Object o2) } Et Comparator object kan angive en alternativ ordning for objekter af en allerede defineret klasse

Flere sorteringer Sorter efter andre sammenligninger: class NavnLen implements Comparator{ public int compare(Object o1,Object o2){ Person p1 = (Person) o1; Person p2 = (Person) o2; return p1.navn.length()-p2.navn.length(); }} //f.eks cpr nummer, fornavn, efternavn,.. Collections.sort(l,new NavnLen());

Mængde operationer Set s1 = new HashSet(), s2= new HashSet(); for(int i=0;i<30;i+=2)s1.add(new Integer(i)); for(int i=0;i<30;i+=3)s2.add(new Integer(i)); p(s1); p(s2); Set union = new HashSet(s1); union.addAll(s2); p(union); Set intersection = new HashSet(s1); intersection.retainAll(s2); p(intersection); Set difference = new HashSet(s1); difference.removeAll(s2); p(difference);

uddata [28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0] [27, 24, 21, 18, 15, 12, 9, 6, 3, 0] [28, 27, 26, 24, 22, 21, 20, 18, 16, 15, 14, 12, 10, 9, 8, 6, 4, 3, 2, 0] [24, 18, 12, 6, 0] [28, 26, 22, 20, 16, 14, 10, 8, 4, 2]

Abildninger: Map Som tabel, men indeks er objekter (F.eks. tekststrenge) Map m =..//X m[] m.put(a,x);// m[a]=x y=m.get(a);//y=m[a]

Datastruktur: Map public interface Map { Object put(Object key, Object value); Object get(Object key); Object remove(Object key); boolean containsKey(Object key); boolean containsValue(Object value); int size(); boolean isEmpty(); // Bulk Operations void putAll(Map t); void clear(); // Collection Views public Set keySet(); public Collection values();

Implementationer: Map Vælg mellem TreeMap og HashMap HashMap den foretrukne Elementer i tabel indiceret via hash- funktion –Opslag meget hurtig –Vækst kan koste dyrt TreeMap Holdes som træstruktur – altid sorteret –Pladseffektiv

Eksempel Map m=new HashMap(); m.put("madsr",new Person(" Mads Rosendahl ")); m.put("troels",new Person(" Troels Andreasen ")); p(m); p(m.get("madsr")); Uddata {troels=Troels Andreasen, madsr=Mads Rosendahl} Mads Rosendahl

Gennemløb Iteration giver simpel og effektiv måde at gennemløbe en struktur –next, hasNext, remove asList gør at tabellen kan bruges som liste. Ændres listen så ændres tabellen også

Gennemløb List list = new LinkedList(); list.add("hej"); list.add("med"); list.add("dig"); for(int i=0;i<list.size();i++) p(list.get(i)); Iterator ii= list.iterator(); while(ii.hasNext()) p(ii.next());

Sammenfatning Mængder, lister, afbildninger –Træer, hægtede lister, tabeller, hashtabeller Søgning, sortering Man skal forstå hvordan det underlæggende er implementeret for at kunne vurdere effektivitet.