Samlingar Collection classes

Relevanta dokument
Samlingar Collection classes

Collection classes. Interface, första exempel. Interface (forts) Men först

Collection Classes. bjectorienterad programmering Sida 1

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

Länkade strukturer. (del 2)

Interfacen Set och Map, hashtabeller

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Objektorienterad Programkonstruktion

Föreläsning 10 Innehåll

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

Javas inbyggda datastrukturer

Föreläsning 2. Länkad lista och iterator

Föreläsning 11 Innehåll

Generiska programenheter. Generiska programenheter Samlingar

Diskutera. Hashfunktion

Inlämningsuppgift och handledning

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Repetition av OOP- och Javabegrepp

Föreläsning 10. ADT:er och datastrukturer

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller

Repetition av OOP- och Javabegrepp

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 2. Länkad lista och iterator

Tentamen, EDAA30 Programmering i Java fortsättningskurs

Föreläsning 2 Innehåll

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Föreläsning 4 Innehåll

Tommy Färnqvist, IDA, Linköpings universitet

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Stackar, köer, iteratorer och paket

DAT043 - föreläsning 8

Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Föreläsning 9. Generiska programenheter Samlingar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator.

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Länkade strukturer, parametriserade typer och undantag

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Outline. Objektorienterad Programmering (TDDC77) Lösningen heter Collection. Collection gränsnittet. Collection. Iterable. Ahmed Rezine.

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 12. Generiska programenheter Designmönstret Iterator Samlingar. Generiska programenheter

Programmering fortsättningskurs

Föreläsning 14 Innehåll

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Objektorienterad Programmering (TDDC77)

Föreläsning 10. Generiska programenheter. Generiska programenheter Samlingar

Föreläsning 2 Innehåll

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

TDDC77 Objektorienterad Programmering

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

Arrayer. results

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Uno Holmer, Chalmers, :28 Uno Holmer, Chalmers, :28

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Symboliska konstanter const

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Föreläsning 11. ADT:er och datastrukturer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

17.9 Funktioner för avbildningstabeller

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Programuppbyggnad från komponenter (en liten orientering)

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037)

Introduktion till Java

Laboration 13, Arrayer och objekt

Trädstrukturer och grafer

Programmering för språkteknologer II, HT2014. Rum

Föreläsning 4 Datastrukturer (DAT037)

Sammansatta datatyper Generics: Parametrisk polymorfism

Generiska datatyper. Parametrisk Polymorfism: Generics. Generisk lista. Utvikning: Typer

Föreläsning Datastrukturer (DAT036)

Arrayer (fält)

Generisk klass med typparameter Inre klass - ListIterator

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

I18N språkoberoende. ResourceBundle. Ikoner. Färg. Javadoc. Meny

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

Tentamen Datastrukturer D DAT 036/DIT960

Transkript:

Samlingar Collection classes Sven-Olof Nyström Uppsala Universitet 17 mars 2005 Skansholm: Kapitel 9, 19 Se även Suns tutorial om Collections Olika slag av samlingar i Java Arrayer (Till exempel: int[]) grundläggande lagrar alla datatyper Vector liknar array men kan expanderas lagrar endast äkta objekt (som definierats i en klass) 1 3 Motivation: Vill samla olika datastrukturer för att representera tabeller, mängder, sekvenser i ett standardbibliotek. Viktigt att alla datastrukturer kan hanteras på ett likartat sätt, så att det är lätt att lära sig använda biblioteket man kan lätt ändra val av datastruktur lätt att sätta ihop olika programkomponenter som skickar och tar emot datastrukturer i form av samlingar Samlingar (forts) Samlingar (Collections Framework) relativt nytt: Från Java 2 platform, version 1.2 idé: ett litet antal generella gränssnitt (interface) som beskriver mängder, sekvenser, tabeller varje samling implementerar ett eller flera gränssnitt 2 4

Exempel på klasser som implementerar samlingar Repetition: Interface En slags lättviktsklasser. Beskriver en uppsättning metoder. Man säger att en klass implementerar ett interface. ArrayList Arrayer. Implementerar List LinkedList Länkade listor. Implementerar List HashMap Hashtabeller. Implementerar Map TreeSet Balanserade binärträd. Implementerar Set, SortedSet 5 7 Interface för samlingar Collection Map Set List SortedMap Collection En samling element operationer för att lägga till och ta bort element Konvention: Varje klass K som implementerar Collection har en konstruktor K(Collection c) (som tar en godtycklig samling) SortedSet Därmed kan man lätt konvertera mellan olika samlingar 6 8

Operationer int size() boolean isempty() boolean contains(object element) boolean remove(object element) boolean add(object element) Iterator iterator() add och remove returnerar true om samlingen ändras till följd av operationen. Ett objekt av klassen iterator (en iterator) är ett slags index eller pekare som används om man vill gå igenom alla element i en samling. Operationer på många element (forts) boolean retainall(collection c) void clear() object[] toarray() retainall sparar endast de element som ingår i den andra samlingen clear tar bort alla element toarray Skapar en array med samma element 9 11 Operationer på många element boolean containsall(collection c) boolean addall(collection c) boolean removeall(collection c) containsall testar om alla element i en viss samling innehåller alla element i en annan samling addall adderar alla element ur en samling till en annan Iteratorer Tre operationer boolean hasnext(); Object next(); void remove(); removeall tar bort de element som ingår i den andra samlingen 10 12

Collections: Ett exempel import java.util.*; class A { public static void main(string args[]) { List l = new ArrayList(); for (int i=0; i<args.length; i++) l.add(args[i]); System.out.println(l); } } Exempel: LinkedList Program B.java 13 15 Körexempel $ javac A.java $ java A en gång är ingen gång [en, gång, är, ingen, gång] $ Exempel (med iteratorer) Program C.java 14 16

Gränssnittet Set Representerar mängder En samling föremål, utan inbördes ordning samma operationer som Collection Implementeras av HashSet och TreeSet (TreeSet implementerar även SortedSet) Gränssnittet SortedSet En mängd som garanterar att dess iterator kommer att traversera mängden enligt elementens naturliga ordning, eller enligt en Comparator (en slags jämförelseoperator) som ges till konstruktorn, Alla element som sätts in i en sorterad mängd måste antingen implementera gränssnittet Comparable (eller accepteras av en given Comparator) 17 19 SortedSet, operationer Object first() Returnerar första elementet Exempel: HashSet Program: D.java Object last() Sista elementet SortedSet subset(object a, Object b) returnerar en vy bestående av alla element i mängden från och med element a fram till (men exklusive) element b 18 20

Exempel: TreeSet import java.util.*; class E { public static void main(string args[]) { SortedSet l = new TreeSet(); for (int i=0; i<args.length; i++) l.add(args[i]); System.out.println(l); } } Kort mellanspel 1 Gränssnittet Comparator definierar metoden public int compare(object o1, Object o2) som jämför sina två argument och returnerar ett negativt tal om första argumentet är mindre än det andra noll om dom är lika ett positivt tal om första argumentet är större. 21 23 Kort mellanspel 2 Körexempel TreeSet $ javac E.java $ java E bättre en fågel i handen än tio i skogen [bättre, en, fågel, handen, i, skogen, tio, än] $ java E ö åra älv [älv, åra, ö] $ Svensk sortering Klassen Locale representerar en geografisk, politisk eller kulturell region. Skriv new Locale(sv", se") för svenska språket (sv) och Sverige (se). Klassen Collator implementerar gränssnittet Comparator. Den har en statisk metod Collator getinstance(locale desiredlocale) som skapar en jämförelseoperator för en given region. 22 24

Exempel: Svensk sortering import java.util.*; import java.text.*; class F { public static void main(string args[]) { Collator collator = Collator.getInstance(new Locale("sv", "se")); SortedSet l = new TreeSet(collator); for (int i=0; i<args.length; i++) l.add(args[i]); System.out.println(l); }} Gränssnittet List En sekvens av objekt där samma objekt kan förekomma flera gånger Operationer ur Collection Object get(int index) Object set(int index, Object element) get returnerar element vid viss position set skriver över tidigare element vid viss position 25 27 Körexempel: Svensk sortering $ javac F.java $ java E Ögren Vallander Vikström Wiklund Åberg Änglund [Vallander, Vikström, Wiklund, Änglund, Åberg, Ögren] $ java F Ögren Vallander Vikström Wiklund Åberg Änglund [Vallander, Wiklund, Vikström, Åberg, Änglund, Ögren] $ List operationer ur Collection (forts) Object add(int index, Object element) int indexof(object element) ListIterator listiterator() add gör insättning vid viss position indexof position för första förekomst av elementet, 1 om elementet inte finns 26 28

Gränssnittet List (forts) ListIterator är en utökning av gränssnittet Iterator där man kan traversera framåt och bakåt modifiera sekvensen vid traversering plocka fram position för olika element Gränssnittet Map En avbildning, eller tabell Skansholm: Avbildningstabell Idé: En association mellan objekt. Exempel: en telefonkatalog. Givet ett namn kan vi ta fram telefonnummer Implementeras av HashMap och TreeMap TreeMap implementerar även SortedMap 29 31 Gränssnittet List: implementationer List implementeras av ArrayList och LinkedList ArrayList Access via position är snabbt. Att skjuta in eller ta bort element (med add och remove) är dyrt. LinkedList Access via position är dyrt. Gränssnittet Map: operationer Object put(object key, Object value) Object get(object key) Object remove(object key) boolean containskey(object key) boolean containsvalue(object key) int size() boolean isempty() 30 32

Gränssnittet Map (forts) void putall(map t) void clear() Set keyset() Collection values() Set entryset() Räkna antal förekomster Program: Freq.java, Freq2.java Gränssnittet Map.Entry: Object getkey() Object getvalue() Object setvalue() 33 35 Sammanfattning Hitta duplicerade ord med HashSet Program: FindDups.java, FindDups2.java Javas standardbibliotek definierar ett antal datastrukturer collections Tack vare interfacebegreppet kan vi använda de olika samlingarna på ett likformigt sätt Kraftfullt, och egentligen inte så komplicerat För att använda dem effektivt krävs nog att man tänker om en smula 34 36