Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Object Oriented Programming Ders 10: Data Structures Mustafa Emre İlal [email protected] Recap • Assignment 08 • File input/output Today • Assignment 9 • Data structures • Thinking in Java – Chapter 11 Collections • We need to give a meaningful structure to the data • Array is a basic structure • We mentioned java.util.Vector • Some common structes exist that programmers often make use of. Each is an analogy for a real world situation. • Örnekler: – – – – – – – Bag Heap Set List Queue Table Tree java.util.* • Java 2 "Collections" – A "framework" (iskelet) – Interfaces (Kontratlar) • Collection, Set, Map, etc. – Implementations (Uygulamaları) • TreeMap, LinkedList, ArrayList, etc. – Older classes that existed in Java 1.1 • Vector, Hashtable – Helper classes • Arrays, Iterator, etc. – Algorithms • Sort, etc. Interfaces (Kontratlar) • Defines the type of data structure – 3 Main Types • Set : No duplicate elements allowed • List : Can have duplicates, order is important • Map : Elements are recalled based on an index Interfaces (Kontratlar) • 6 interfaces in total – Collection (general groupings) • Set (elements are important – can be ordered) • List (order is the determining factor) • SortedSet (a set that is kept in order based on a comparing method. [Comparator]) – Map (matching of an element to a unique ‘key’ for later retrieval) • SortedMap (collection that is ordered by the key) Classes Implementation Type HashTable Set Interface HashSet List Map Variable sized Array Balanced Tree TreeSet ArrayList HashMap Linked list LinkedList TreeMap Set Classes • HashSet – A structure that stores elements using a hashtable algorithm. Fastest set. • TreeSet – A sorted set implementation using a "Red-Black" sorting algorithm. Examples - Sets import java.util.*; HashSet toolBox = new HashSet(); toolBox.add(“hammer"); toolBox.add(“screwdriver"); toolBox.add(“pliers"); if ( !toolBox.isEmpty() ) println( toolBox.size() ); println ( toolBox ); List Classes • ArrayList – Similar to a Vector. An automatically resizable Array implementation. • LinkedList – “Doubly linked list” implementation where given an element you can access the previous and next elements. Useful in modelling queues. Example - Lists import java.util.*; ArrayList attendance = new ArrayList(); attendance.add("Ali Durmaz"); attendance.add("Veli Kaymaz"); attendance.add("Ayşe Kaçmaz"); for (i=0; i< attendance.size(); i++) println(attendance.get(i) ); Map Classes • HashMap – An implementation where keys are stored and retrieved using a hastable. Fast. • TreeMap – A SortedMap implementation that keeps keys ordered using a "Red-Black" sorting algorithm. Example - Maps import java.util.*; HashMap team = new HashMap(); team.put(“defender", “Emre"); team.put(“goalie", “Kadir"); team.put(“striker", “Lale"); if ( ! team.containsKey(“midfielder") ) team.put(“midfielder", “Mustafa"); Helper classes • Arrays – Static methods • Searching, sorting, comparison, populating, etc. • Basic usage – Iterator – Comparator – Exceptions Iterator • Mechanism that allows us to examine the elements stored in a data structure one by one. – The iterator() that exists in all collections returns an iterator that we can use. – Iterator only has three methods • Object next() • boolean has next() • void remove() • ListIterator – Has additional methods that are suitable for lists. • • • • int nextIndex() void set(Object o) boolean hasPrevious() … Example - Iterator import java.util.*; Iterator i = attendance.iterator(); while ( i.hasNext() ) System.out.println( i.next() ); Generics – Java 1.5 • Previously a collection had no idea what Type (the class they belonged to) of elements it was storing. • Java 1.5 provides “generics”. Through this mechanism, the compiler guarantees that the program uses the correct classes. Generics – example ArrayList<String> attendance = new ArrayList<String>(); attendance.add("Ali Durmaz"); attendance.add("Veli Kaymaz"); attendance.add(new Integer(25)); //error!! for (i=0; i< attendance.size(); i++) println(attendance.get(i) ); Iterator<String> i = attendance.iterator(); while ( i.hasNext() ) System.out.println( i.next() ); Assignment 10 • Rewrite the ShapeApplicaitons you have developed for assignment 07, using Collections. – – – • Choose a collection for Shapes Choose a group for colors etc. Hint: Make use of Comparator to simplify sorting... Next week • Interfaces and beyond