Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

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.

Lignende præsentationer


Præsentationer af emnet: "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."— Præsentationens transcript:

1 Begreber og Redskaber 5

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

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

4 Implementationer Set List Map SortedSet SortedMap TreeSetHashSet LinkedListArrayList HashMapTreeMap TreeSetTreeMap

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)

6 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;} }

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

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

9 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

10 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)

11 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

12 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

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

14 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

15 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)

16 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

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

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

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

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

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

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

23 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

24 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

25 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å

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

27 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.


Download ppt "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."

Lignende præsentationer


Annoncer fra Google