1 / 27

Begreber og Redskaber 5

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

morna
Download Presentation

Begreber og Redskaber 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Begreber og Redskaber 5 BRP

  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 Collection Datastrukturer: (interface) Algoritmer: (statiske metoder) Map Set List SortedMap SortedSet Collections Arrays

  4. Implementationer TreeSet HashSet • Set • List • Map • SortedSet SortedMap LinkedList ArrayList HashMap TreeMap TreeSet TreeMap

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

  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.

More Related