27
Begreber og Redskaber 5

Begreber og Redskaber 5

  • Upload
    morna

  • View
    33

  • Download
    0

Embed Size (px)

DESCRIPTION

Begreber og Redskaber 5. BRP. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Begreber og Redskaber 5

Begreber og Redskaber 5

Page 2: 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,..

Page 3: Begreber og Redskaber 5

CollectionsDatastrukturer: (interface)

Algoritmer: (statiske metoder)

Collection

Set List

SortedSet

Map

SortedMap

CollectionsArrays

Page 4: Begreber og Redskaber 5

Implementationer• Set

• List

• Map

• SortedSet SortedMap

TreeSet HashSet

LinkedList ArrayList

HashMap TreeMap

TreeSet TreeMap

Page 5: Begreber og Redskaber 5

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)

Page 6: Begreber og Redskaber 5

Sammenligninginterface Comparable

public int compareTo(Object o)

<0: mindre =0: ens >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;}

}

Page 7: Begreber og Redskaber 5

Tabel som listeBrug 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);

Page 8: Begreber og Redskaber 5

UddataTabel:

[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]

Page 9: Begreber og Redskaber 5

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

Page 10: Begreber og Redskaber 5

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)

Page 11: Begreber og Redskaber 5

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

Page 12: Begreber og Redskaber 5

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

Page 13: Begreber og Redskaber 5

List: Listeradd(Object) Tilføj til slut i listen

get(index) hent elementset(index,Object) ændr object på plads

index

indexOf(Object) første index for objectlastIndexOf(Object)

subList(int from,int to) lav dellisteaddList(Collection)

Object[] toArray();

Page 14: Begreber og Redskaber 5

Implementationer: Set• Vælg mellem TreeSet og HashSetHashSet 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

Page 15: Begreber og Redskaber 5

Implementationer: List• Vælg mellem ArrayList og LinkedListArrayList 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)

Page 16: Begreber og Redskaber 5

Comparable

interface Comparable{int compareTo(Object o)

}

Objekter fra klasser der implementererComparable kan sammenlignes med andre.

Man angiver en ”standard” ordning af sine objekter• For String er det leksikalsk ordning

Page 17: Begreber og Redskaber 5

Comparator

interface Comparator{

int compare (Object o1,Object o2)

}

Et Comparator object kan angive en alternativ

ordning for objekter af en allerede defineret klasse

Page 18: Begreber og Redskaber 5

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());

Page 19: Begreber og Redskaber 5

Mængde operationerSet 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);

Page 20: Begreber og Redskaber 5

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]

Page 21: Begreber og Redskaber 5

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]

Page 22: Begreber og Redskaber 5

Datastruktur: Mappublic 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();

Page 23: Begreber og Redskaber 5

Implementationer: Map• Vælg mellem TreeMap og HashMapHashMap 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

Page 24: Begreber og Redskaber 5

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

Page 25: Begreber og Redskaber 5

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å

Page 26: Begreber og Redskaber 5

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());

Page 27: Begreber og Redskaber 5

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.