c omp 110/401 c ollection k inds instructor: prasun dewan

Download C OMP 110/401 C OLLECTION K INDS Instructor: Prasun Dewan

If you can't read please download the document

Upload: olivia-ethel-mills

Post on 17-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

  • Slide 1
  • Slide 2
  • C OMP 110/401 C OLLECTION K INDS Instructor: Prasun Dewan
  • Slide 3
  • 2 P REREQUISITE Arrays Collections Implementation
  • Slide 4
  • 3 S TATIC VS. D YNAMIC S TRUCTURES Static Beans have fixed number of properties Arrays have fixed number of elements Though an array variable can be assigned arrays of different sizes
  • Slide 5
  • 4 H ISTORY public interface StringHistory { public void addElement(String element); public int size(); public String elementAt( int index); }
  • Slide 6
  • 5 D ATABASE public interface StringDatabase { //from history public int size(); public void addElement(String element); public String elementAt( int index); //additional methods public void removeElement(String element); public boolean member(String element); public void clear(); } Do we need a history if we have a database? Yes, principle of least privilege
  • Slide 7
  • 6 P RINCIPLE OF L EAST P RIVILEGE Do not give a user of some code more rights than it needs Code is easier to change Need to learn less to use code Less likelihood of accidental or malicious damage to program Like hiding engine details from car driver
  • Slide 8
  • 7 U SING D ATABASE AS H ISTORY public interface StringDatabase { //from history public int size(); public void addElement(String element); public String elementAt( int index); //additional methods public void removeElement(String element); public boolean member(String element); public void clear(); } Programmer would be able to perform inappropriate operations on a logical history implemented physically as a database
  • Slide 9
  • 8 C O -E XISTENCE public interface StringDatabase extends StringHistory { //additional methods public void removeElement(String element); public boolean member(String element); public void clear(); } Programmer would be able to perform inappropriate operations on a logical history implemented physically as a database
  • Slide 10
  • 9 V ECTOR : G ENERAL O BJECT C OLLECTION public final int size(); public final Object elementAt(int index); public final void addElement(Object obj) ; public final void setElementAt(Object obj, int index); public final void insertElementAt(Object obj, int index); public final boolean removeElement(Object obj); public final void removeElementAt( int index); public final int indexOf(Object obj); Do we need other collections if we have Vector Yes, principle of least privilege Yes, implementation considerations
  • Slide 11
  • 10 C LASS A RRAY L IST A ND V ECTOR (L IST ) public final int size(); public final Object get(int index); public final void add(Object obj) ; public final void set(int index, Object obj); public final void insert( int index, Object obj); public final boolean remove(Object obj); public final void remove( int index); public final int indexOf(Object obj); Vector has ArrayList (List) methods plus the additional original methods in the previous slides Can add arbitrary objects to these collections
  • Slide 12
  • 11 A RRAY L IST AND V ECTOR U SER import java.util.ArrayList; import java.util.List; import java.util.Vector; public class VectorArrayListUser { public static void main (String[] args) { List names = new Vector(); List grandSlams = new ArrayList(); names.add("Nadal"); grandSlams.add(11); names.add("Federer"); grandSlams.add(17); names.add(Borg"); grandSlams.add(11); names.add(Sampras"); grandSlams.add(14); } Primitive values converted to corresponding wrapper objects
  • Slide 13
  • 12 V ISUALIZING C OLLECTIONS public static void main (String[] args) { StringHistory stringHistory = new AStringHistory(); stringHistory.addElement("James Dean"); stringHistory.addElement("Joe Doe"); stringHistory.addElement("Jane Smith"); stringHistory.addElement("John Smith"); ObjectEditor.edit(stringHistory); } public interface StringHistory { public void addElement(String element); public int size(); public String elementAt( int index); }
  • Slide 14
  • 13 C ONVENTIONS FOR V ARIABLE -S IZED C OLLECTION @StructurePattern(StructurePatternNames.VECTOR_PATTERN) public interface C{ public T elementAt ( int index); public int size(); public Any setElementAt(T t, int index); } Arbitrary Type. Read methods Write method (optional) Convention based on Vector Unconstrained Type (void or T in practice)
  • Slide 15
  • 14 @StructurePattern(StructurePatternNames.LIST_PATTERN) public interface C { public T get ( int index); public int size(); public Any set ( int index) T 2); } A LTERNATIVE C ONVENTIONS FOR V ARIABLE -S IZED C OLLECTION Arbitrary Type. Read methods Write method (optional) Unconstrained Type (void or T in practice) Convention based on ArrayList
  • Slide 16
  • 15 R EAD VS. W RITE M ETHODS Read Methods Used to get components of object Getter methods size(), elementAt() Write Methods Used to change components of object Setter methods addElement(), removeElement(), setElementAt() some used by Object Editor Distinction independent of conventions Conventions used in Object Editor
  • Slide 17
  • 16 C ONVENTIONS FOR V ARIABLE -S IZED C OLLECTION public interface PointHistory { public void addElement ( int x, int y); public Point elementAt ( int index); public int size(); } Read Methods Write Method not recognized by OE Arbitrary Type
  • Slide 18
  • 17 AP OINT H ISTORY Variable-sized Collection History Methods added to menu associated with class Graphic elements of dynamic collections added at their (X, Y) locations
  • Slide 19
  • 18 I MPORTANT V ARIABLE S IZED C OLLECTIONS Variable-sized collections History Orders elements Allows retrieval, addition but not replacement or deletion Point History, String History Database May order elements Allows retrieval, search, addition, insertion, and unconstrained removal StringDatabase (did not but should have supported insertion) Sets No duplicates Other collection kinds?
  • Slide 20
  • 19 S TACK : L AST IN F IRST O UT public interface StringStack { public boolean isEmpty(); public String getTop(); public void push(String element); public void pop(); } public interface StringStack { public boolean isEmpty(); public String getTop(); public void push(String element); public void pop(); } StringStack stringStack = new AStringStack(); stringStack.push("James Dean"); stringStack.push("Joe Doe"); stringStack.push("Jane Smith"); stringStack.push("John Smith"); System.out.println(stringStack.getTop()); stringStack.pop(); System.out.println(stringStack.getTop()); John Smith Jane Smith
  • Slide 21
  • 20 Q UEUE : F IRST IN F IRST O UT public interface StringStack { public boolean isEmpty(); public String getTop(); public void push(String element); public void pop(); } public interface StringQueue { public boolean isEmpty(); public String getHead(); public void enqueue(String element); public void dequeue(); } StringQueue stringQ = new AStringQueue(); stringQ.enqueue("James Dean"); stringQ.enqueue("Joe Doe"); stringQ.enqueue("Jane Smith"); stringQ.enqueue("John Smith"); System.out.println(stringStack.getHead()); stringQ.dequeue(); System.out.println(stringStack.getHead()); James Dean Joe Doe
  • Slide 22
  • 21 D ISPLAYING S TACK (LIFO) public interface StringStack { public boolean isEmpty(); public String getTop(); public void push(String element); public void pop(); } StringStack stringStack = new AStringStack(); stringStack.push("James Dean"); stringStack.push("Joe Doe"); stringStack.push("Jane Smith"); stringStack.push("John Smith"); ObjectEditor.edit(stringStack); Does not provide read methods for reading all elements
  • Slide 23
  • 22 D ISPLAYING T RANSPARENT S TACK (LIFO) public interface TransparentStringStack { public int size(); public String get(int index); public void push(String element); public void pop(); } StringStack stringStack = new AStringStack(); stringStack.push("James Dean"); stringStack.push("Joe Doe"); stringStack.push("Jane Smith"); stringStack.push("John Smith"); bus.uigen.ObjectEditor.edit(stringStack); Provides read methods following OE collection conventions Can provide additional method for top value
  • Slide 24
  • 23 A RRAY L IST AND V ECTOR U SER import java.util.ArrayList; import java.util.List; import java.util.Vector; public class VectorArrayListUser { public static void main (String[] args) { List names = new Vector(); List grandSlams = new ArrayList(); names.add("Nadal"); grandSlams.add(11); names.add("Federer"); grandSlams.add(17); names.add("Djokovic"); grandSlams.add(5); names.add(Borg"); grandSlams.add(11); } What kind of dynamic structure is being simulated?
  • Slide 25
  • 24 I NDEXED C OLLECTIONS Each element identified by a unique index Like array indices, collection indices are consecutive Highest index Lowest Index = size -1 public interface TransparentStringStack { public int size(); public String get(int index); public void push(String element); public void pop(); }
  • Slide 26
  • 25 T ABLES Each element identified by a unique object called a key Usually strings are used as keys
  • Slide 27
  • 26 H ASH M AP (I MPLEMENT M AP ) // associates key with value, returning last value associated with key public final Object put (Object key, Object value); // returns last value associated with key, or null if no association public final Object get (Object key);
  • Slide 28
  • 27 H ASH M AP U SE public static void main (String[] args) { Map aMap = new HashMap(); aMap.put("Nadal", 10); aMap.put("Federer", 17); aMap.put("Sampras", 14); System.out.println(aMap.get("Nadal")); System.out.println(aMap.get("nadal")); aMap.put("Nadal", 11); System.out.println(aMap.get("Nadal")); ObjectEditor.edit(aMap); }
  • Slide 29
  • 28 OE C ONVENTIONS F OR T ABLE Necessary but not sufficient to displays all keys and elements // associates key with value, returning last value associated with key public put ( key, value); // returns last value associated with key, or null if no association public get ( key); // optional, removes associated value, and returns it or null public remove( key);
  • Slide 30
  • 29 E XTRA S LIDES
  • Slide 31
  • 30 INDEX O F (S TRING ELEMENT ) James Dean Joe Doe Jane Smith arraysize indexOf(James Dean); 0 index Jane Smith 4 John Smith
  • Slide 32
  • 31 V ISUALIZATION OF V ARIABLE -S IZED C OLLECTIONS public interface StringHistory { public void addElement(String element); public int size(); public String elementAt( int index); } public interface StringDatabase { //from history public int size(); public void addElement(String element); public String elementAt( int index); //additional methods public void removeElement(String element); public boolean member(String element); public void clear(); }
  • Slide 33
  • 32 S TRING D ATABASE C OMMANDS
  • Slide 34
  • 33 G ENERIC L IST : V ECTOR java.util.List strings = new java.util.Vector(); James Dean Joe Doe strings.addJames Dean) strings.add(Joe Doe)
  • Slide 35
  • 34 A RRAY L IST ( JAVA. UTIL.A RRAY L IST ) AND L IST ( JAVA. UTIL.L IST ) java.util.List strings = new java.util.ArrayList(); James Dean Joe Doe strings.add(James Dean) strings.add(Joe Doe)
  • Slide 36
  • 35 V ISUALIZATION OF V ARIABLE -S IZED C OLLECTIONS public class AStringDatabase implements StringHistory { public final int MAX_SIZE = 50; String[] contents = new String[MAX_SIZE]; int size = 0; public int size() { return size;} public String elementAt ( int index) { return contents[index]; } boolean isFull() { return size == MAX_SIZE; } public void addElement(String element) { } public void removeElement(String element) {}; public boolean member(String element) {}; public void clear() {}; }
  • Slide 37
  • 36 I MPORTANT V ARIABLE S IZED C OLLECTIONS Variable-sized collections History Orders elements Allows retrieval, addition but not replacement or deletion Point History, String History Database May order elements Allows retrieval, search, addition, insertion, and unconstrained removal StringDatabase (did not but should have supported insertion)