Algoritmer och datastrukturer ADT er datastrukturer och standardklasser

  • Slides: 44
Download presentation
Algoritmer och datastrukturer ADT: er, datastrukturer och standardklasser i Java Föreläsning 2 (Weiss kap.

Algoritmer och datastrukturer ADT: er, datastrukturer och standardklasser i Java Föreläsning 2 (Weiss kap. 6) u Datatyp, abstrakt datatyp, datastruktur u Några vanliga datastrukturer u Tillämpningar u Tidskomplexitet u Standardklasser u Standardalgoritmer ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 1

Datatyp u En datatyp är en mängd av värden Ex. int, char, boolean, double,

Datatyp u En datatyp är en mängd av värden Ex. int, char, boolean, double, Person, String u Typer som int, char, boolean och float kallas ibland konkreta datatyper eftersom de är inbyggda i språket och har en direkt representation i datorns minne u Definitionen av en datatyp säger ej nödvändigtvis vilka operationer som är giltiga för den nya typen ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 2

Abstrakt datatyp u En Abstrakt Data. Typ (ADT) består av – en datatyp (en

Abstrakt datatyp u En Abstrakt Data. Typ (ADT) består av – en datatyp (en mängd av värden) – operationer som är giltiga för värden av typen – axiom som beskriver operationernas betydelse Ex. heltalen tillsammans med de aritmetiska operationerna + - * / och lagarna för aritmetik u En abstrakt datatyp definierar inte hur värden av typen representeras i en dator – En abstrakt datatyp kan implementeras på olika sätt ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 3

Datastruktur u Representation av data (värden) och operationer i en abstrakt datatyp u En

Datastruktur u Representation av data (värden) och operationer i en abstrakt datatyp u En datastruktur är en konkret implementering av en abstrakt datatyp -- med hjälp av typbildningskonstruktioner i ett programmeringsspråk: – Datarepresentation för typens värden t int, char, boolean, float + fält, post (struct), pekare, . . . + Algoritmer för typens operationer t metoder, operatorer ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 4

Exempel på datastrukturer u ADT: n ”Mängd av heltal” med operationerna add och contains

Exempel på datastrukturer u ADT: n ”Mängd av heltal” med operationerna add och contains implementeras av datastrukturerna Simple. Set och Set. Of. Int (båda representeras som fält - men på olika sätt) u ADT: erna Stack Kö kan t. ex. representeras med: (Last-In-First-Out) (First In First Out) Fält Länkad lista ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 5

Datastrukturers resurskrav Datarepresentationen påverkar u datastrukturens minnesbehov u beräkningstiden för strukturens operationer Fält +

Datastrukturers resurskrav Datarepresentationen påverkar u datastrukturens minnesbehov u beräkningstiden för strukturens operationer Fält + snabb åtkomst av samtliga element - ofta outtnyttjat minne (overhead) Länkad lagring + minnesåtgången motsvarar behovet, men. . . - en (eller flera) extra pekare per dataelement - åtkomst av vissa element kan vara långsam ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 6

Några vanliga ADT: er u Stack u Kö u Lista u Sökträd u Hash.

Några vanliga ADT: er u Stack u Kö u Lista u Sökträd u Hash. Tabell u Prioritetskö u Map ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ LIFO FIFO flexibel access ordnad mängd ordnad kö avbildningstabell (associationslista) Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 7

Stack LIFO = Last In First Out push(x) top Operationer push(x) pop() top() is.

Stack LIFO = Last In First Out push(x) top Operationer push(x) pop() top() is. Empty() Lägger x överst på stacken Tar bort översta elementet Returnerar översta elementet Avgör om stacken är tom ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ x Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 x pop x Förel. 2: ADT: er och standardklasser Nr: 4 8

Kö FIFO = First In First Out Operationer enqueue(x) dequeue() get. Front() is. Empty()

Kö FIFO = First In First Out Operationer enqueue(x) dequeue() get. Front() is. Empty() y Lägger x sist i kön Tar bort första elementet Returnerar första elementet Avgör om kön är tom get. Front y y ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ x enqueue(x) dequeue Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 9

Lista Insättning och uttag kan göras i valfri position a c d e f

Lista Insättning och uttag kan göras i valfri position a c d e f b ©Uno Holmer, Chalmers, 2022 -02 -15 10: 31 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 10

Sökträd Ordnat binärt träd utan duplikat (ordnad mängd) Operationer add(x) contains(x) remove(x) is. Empty()

Sökträd Ordnat binärt träd utan duplikat (ordnad mängd) Operationer add(x) contains(x) remove(x) is. Empty() Sätter in x i trädet Söker efter x i trädet Tar bort x ur trädet Avgör om trädet är tomt y x<y x>y ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 11

Hashtabell Tabellbaserad struktur utan duplikat (oordnad mängd) Operationer add(x) contains(x) remove(x) is. Empty() Sätter

Hashtabell Tabellbaserad struktur utan duplikat (oordnad mängd) Operationer add(x) contains(x) remove(x) is. Empty() Sätter in x i tabellen Söker efter x i tabellen Tar bort x ur tabellen Avgör om tabellen är tom ”Allan” hash() 0 1 ”Kalle” 2 ”Kalle” … ”Allan” N-1 ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 12

Prioritetskö Snabb access av minsta elementet (ordnad kö) Operationer add(x) peek() remove() is. Empty()

Prioritetskö Snabb access av minsta elementet (ordnad kö) Operationer add(x) peek() remove() is. Empty() Lägger x i kön Returnerar minsta elementet Tar bort minsta elementet Avgör om kön är tom y x>y ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 x>y Förel. 2: ADT: er och standardklasser Nr: 4 13

Map Tabell för namn-värde-avbildningar Operationer add(k, x) get(k) remove(k) is. Empty() Sätter in avbildningen

Map Tabell för namn-värde-avbildningar Operationer add(k, x) get(k) remove(k) is. Empty() Sätter in avbildningen (k, x) i tabellen Returnerar värdet med nyckeln k Tar bort nyckeln k ur tabellen Avgör om tabellen är tom ”Kalle” 031 -123456 ”Allan” ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ 023 -112112 Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 14

Tillämpningar ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer

Tillämpningar ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 15

Stack u Lagring av aktiveringsposter i blockstrukturerade programmeringsspråk. u Reversering av dataström x, y,

Stack u Lagring av aktiveringsposter i blockstrukturerade programmeringsspråk. u Reversering av dataström x, y, z, … u DFS …, z, y, x = Djupet Först Sökning i grafer och träd – Ex. kommandot back i Zuul (sökning efter ett visst rum) u Ex. parentesmatchning ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ (()([]())) Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 ([)] Förel. 2: ADT: er och standardklasser Nr: 4 16

FIFO-kö u Operativsystem u BFS = Bredden Först Sökning i grafer och träd –

FIFO-kö u Operativsystem u BFS = Bredden Först Sökning i grafer och träd – Ex. Nivåvis genomlöpning av träd – Ex. Släck ljuset rum för rum i ett hus u 4 4 4 4 3 3 3 4 4 3 2 2 2 3 4 4 3 2 1 2 3 4 4 3 2 2 2 3 4 4 3 3 3 4 4 4 4 Beräkning av kortaste avstånden i en oviktad graf ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 17

Binära sökträd u Ex. Ordlistor u Ordnade mängder med stor förändringsintensitet – Om sökning

Binära sökträd u Ex. Ordlistor u Ordnade mängder med stor förändringsintensitet – Om sökning blandas med sök insättningar och uttag blir linjära strukturer blanda uttag som listor och fält alltför ineffektiva ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ alltför Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 med Förel. 2: ADT: er och standardklasser Nr: 4 18

Hashtabell u Symboltabeller u Oordnade i kompilatorer mängder med stor förändringsintensitet – Sökning blandat

Hashtabell u Symboltabeller u Oordnade i kompilatorer mängder med stor förändringsintensitet – Sökning blandat med insättningar och uttag u Spelprogram – Ex. memorering av spelställningar i ett schackparti ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 19

Prioritetskö u Operativsystem u Datakompression med Huffmans algoritm u MST = Minsta Uppspännande Trädet

Prioritetskö u Operativsystem u Datakompression med Huffmans algoritm u MST = Minsta Uppspännande Trädet i grafer u Dijkstras algoritm för kortaste avstånden i viktad graf ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 20

Tidskomplexitet hos vanliga datastrukturer DS Access, T(N) Kommentar Stack Sist insatta, O(1) Mycket snabb

Tidskomplexitet hos vanliga datastrukturer DS Access, T(N) Kommentar Stack Sist insatta, O(1) Mycket snabb FIFO-kö Först insatta, O(1) Mycket snabb Länkad lista Valfritt element, O(N) Linjärsökning Sökträd Valfritt element, O(log N) AC, WC (kräver balansering av trädet) Hashtabell Valfritt element, O(1) AC Prioritetskö finn. Minsta, O(1) tag. Bort. Minsta, O(log N) insättning är O(1) i genomsnitt, men O(log N) i värsta fall (WC) WC = Worst Case (Värsta fallet) AV = Average Case (I genomsnitt) T(N) = tidsåtgång när operationen i fråga appliceras på en struktur av storlek N T(N) är O(f(N)) omm T(N) är uppåt begränsad av f(N) O(1) betyder att operationen tar konstant tid (beror ej av N) ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 21

Standardklasser i Java (Weiss kap. 6) u Standardklasser u Standardalgoritmer ©Uno Holmer, Chalmers, 2022

Standardklasser i Java (Weiss kap. 6) u Standardklasser u Standardalgoritmer ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 22

Objektsamlingar och avbildningstabeller Implementeringsteknik (datastruktur) Hashtabell Gräns- Set snitt List (ADT) Map ©Uno Holmer,

Objektsamlingar och avbildningstabeller Implementeringsteknik (datastruktur) Hashtabell Gräns- Set snitt List (ADT) Map ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Flexibelt fält Hash. Set Balanserat sökträd Länkad lista Tree. Set Array. List Hash. Map Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Linked. List Tree. Map Förel. 2: ADT: er och standardklasser Nr: 4 23

Köer Implementeringsteknik Gränssnitt Queue ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse.

Köer Implementeringsteknik Gränssnitt Queue ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Binär hög Länkad lista Priority. Queue Linked. List Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 24

Behållare och asssociativa datastrukturer Ordnade Oordnade Hash. Set Behållare Tree. Set Array. List Linked.

Behållare och asssociativa datastrukturer Ordnade Oordnade Hash. Set Behållare Tree. Set Array. List Linked. List Vector Associativa ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Priority. Queue Stack Tree. Map Hash. Map Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 25

public interface Iterable<E> public Iterator<E> iterator() Returns an iterator over a set of elements

public interface Iterable<E> public Iterator<E> iterator() Returns an iterator over a set of elements of type E Ex. public class Some. Class implements Iterable<Some. Type> { public Iterator<Some. Type> iterator(); . . . } ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 26

public interface Iterator<E> boolean has. Next() Returns true if the iteration has more elements.

public interface Iterator<E> boolean has. Next() Returns true if the iteration has more elements. E next() Returns the next element in the iteration. void remove() Removes from the underlying collection the last element returned by the iterator. ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 27

public interface Collection<E> extends Iterable<E> boolean add(E o) Ensures that this collection contains the

public interface Collection<E> extends Iterable<E> boolean add(E o) Ensures that this collection contains the specified element. boolean add. All(Collection<? extends E> c) Adds all of the elements in the specified collection to this collection. void clear() Removes all of the elements from this collection. boolean contains(Object o) Returns true if this collection contains the specified element. int size() Returns the number of elements in this collection. boolean is. Empty() Returns true if this collection contains no elements. Iterator<E> iterator() Returns an iterator over the elements in this collection. boolean remove(Object o) Removes a single instance of the specified element from this collection. Object[] to. Array() Returns an array containing all of the elements in this collection. + others ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 28

Förenklad iterering f. o. m. Java 5 Some. Class some. Collection. Object. . .

Förenklad iterering f. o. m. Java 5 Some. Class some. Collection. Object. . . for ( type variable : some. Collection. Object ) {. . . } Iterator itr = some. Collection. Object. iterator(); while (itr. has. Next()) {. . . type variable = itr. next(); . . . } ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 29

Ex. Förenklad iterering Hash. Set<Integer> hs = new Hash. Set<Integer>(); . . . for

Ex. Förenklad iterering Hash. Set<Integer> hs = new Hash. Set<Integer>(); . . . for ( Integer x : hs ) System. out. println(x); ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 30

Abstrakta mallklasser Gränssnitt public Interface Int Implementerar vissa grundmetoder Abstrakt mallklass public abstract class

Abstrakta mallklasser Gränssnitt public Interface Int Implementerar vissa grundmetoder Abstrakt mallklass public abstract class Abs. Cls implements Int Konkret klass public class Cls 1 extends Abs. Cls ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Konkret klass public class Cls 2 implements Int Förel. 2: ADT: er och standardklasser Nr: 4 31

Mallklasser Iterable Collection List Set Abstract. List Abstract. Map Abstract. Collection Abstract. Set Map

Mallklasser Iterable Collection List Set Abstract. List Abstract. Map Abstract. Collection Abstract. Set Map Object Queue Abstract. Sequential. List ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 32

Linjära liststrukturer Iterable Object Collection List Abstract. Collection Queue Abstract. List Abstract. Sequential. List

Linjära liststrukturer Iterable Object Collection List Abstract. Collection Queue Abstract. List Abstract. Sequential. List Array. List ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Linked. List Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 33

Direktaccesstrukturer Iterable Object Collection List Abstract. Collection Random. Access Array. List ©Uno Holmer, Chalmers,

Direktaccesstrukturer Iterable Object Collection List Abstract. Collection Random. Access Array. List ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Abstract. List Vector Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 34

Stackar och prioritetsköer Iterable Object Collection List Random. Access Abstract. Collection Abstract. List Queue

Stackar och prioritetsköer Iterable Object Collection List Random. Access Abstract. Collection Abstract. List Queue Abstract. Queue Vector Priority. Queue Stack ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 35

Mängdstrukturer Iterable Object Collection Set Abstract. Collection Sorted. Set Abstract. Set Tree. Set ©Uno

Mängdstrukturer Iterable Object Collection Set Abstract. Collection Sorted. Set Abstract. Set Tree. Set ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Hash. Set Förel. 2: ADT: er och standardklasser Nr: 4 36

Associativa strukturer Map Sorted. Map Object Abstract. Map Tree. Map ©Uno Holmer, Chalmers, 2022

Associativa strukturer Map Sorted. Map Object Abstract. Map Tree. Map ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Hash. Map Förel. 2: ADT: er och standardklasser Nr: 4 37

public interface Map<K, V> void clear() Removes all mappings from this map (optional operation).

public interface Map<K, V> void clear() Removes all mappings from this map (optional operation). boolean contains. Key(Object key) Returns true if this map contains a mapping for the specified key. boolean contains. Value(Object value) Returns true if this maps one or more keys to the specified value. Set<Map. Entry<K, V>> entry. Set() Returns a set view of the mappings contained in this map. V get(Object key) Returns the value to which this maps the specified key. boolean is. Empty() Returns true if this map contains no key-value mappings. Set<K> key. Set() 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. V remove(Object key) Removes the mapping for this key from this map if it is present. int size() Returns the number of key-value mappings in this map. Collection<V> values() Returns a collection view of the values contained in this map. ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 38

Standardalgoritmer u Statiska metoder i class Collections u Används för linjära strukturer, t. ex.

Standardalgoritmer u Statiska metoder i class Collections u Används för linjära strukturer, t. ex. Array. List och Linked. List u Ex. Linked. List<Integer> l = new Linked. List<Integer>(); for ( int i = 0; i < 10; i++ ) l. add(i); Collections. shuffle(l); Collections. sort(l); System. out. println(Collections. binary. Search(l, x)); ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 39

Standardalgoritmer forts. rotate(List list, int distance) Rotates all of the elements in the list

Standardalgoritmer forts. rotate(List list, int distance) Rotates all of the elements in the list by the specified distance replace. All(List list, Object old. Val, Object new. Val) Replaces all occurrences of one specified value with another index. Of. Sub. List(List source, List target) Returns the index of the first sublist of source that is equal to target last. Index. Of. Sub. List(List source, List target) Returns the index of the last sublist of source that is equal to target swap(List, int) Swaps the elements at the specified positions in the specified list frequency(Collection, Object) Counts the number of times the object occurs in the collection disjoint(Collection, Collection) Determines whether two collections are disjoint add. All(Collection, elements. . . ) Adds specified elements to the collection ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 40

Standardalgoritmer forts. sort(List) Sorts a list using a merge sort algorithm binary. Search(List, Object)

Standardalgoritmer forts. sort(List) Sorts a list using a merge sort algorithm binary. Search(List, Object) Searches for an element in an ordered list using the binary search algorithm shuffle(List) Randomly permutes the elements in a list fill(List, Object) Overwrites every element in a list with the specified value copy(List dest, List src) Copies the source list into the destination list min(Collection) Returns the minimum element in a collection max(Collection) Returns the maximum element in a collection ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 41

Equals u u Alla klasser ärver metoden equals från Object. Den ärvda metoden ger

Equals u u Alla klasser ärver metoden equals från Object. Den ärvda metoden ger pekarlikhet vilket i allmänhet är alltför diskriminerande. En korrekt överskuggning av equals bör ha följande form public class Some. Class {. . . public boolean equals(Object obj) { if ( obj == null || get. Class() != obj. get. Class() ) return false; else { Some. Class tmp = (Some. Class)obj; jämför instansvariablerna i detta objekt med variablerna i obj och returnera resultatet } } } ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 42

Equals - exempel public class Geometric. Object { private int x = 0; private

Equals - exempel public class Geometric. Object { private int x = 0; private int y = 0; public Geometric. Object(int x, int y) { this. x = x; this. y = y; } public boolean equals(Object obj) { if ( obj == null || get. Class() != obj. get. Class() ) return false; else { Geometric. Object tmp = (Geometric. Object)obj; return x == tmp. x && y == tmp. y; } }. . . } ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 43

Equals - exempel public class Circle extends Geometric. Object { private int radius; public

Equals - exempel public class Circle extends Geometric. Object { private int radius; public Circle(int x, int y, int radius) { super(x, y); this. radius = radius; } public boolean equals(Object obj) { return super. equals(obj) && radius == ((Circle)obj). radius; }. . . } ©Uno Holmer, Chalmers, 2022 -02 -15 10: 32 www. cse. chalmers. se/~holmer/ Algoritmer och datastrukturer LET 375, DAI 2+I 2, 18/19, lp 4 Förel. 2: ADT: er och standardklasser Nr: 4 44