Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 16.  Data structures that take control of organizing elements  Elements not in fixed positions  Advantage – better performance Adding Removing.

Similar presentations


Presentation on theme: "Chapter 16.  Data structures that take control of organizing elements  Elements not in fixed positions  Advantage – better performance Adding Removing."— Presentation transcript:

1 Chapter 16

2  Data structures that take control of organizing elements  Elements not in fixed positions  Advantage – better performance Adding Removing Finding

3  Unordered collection of distinct elements  Fundamental operations Adding an element Removing an element Containment testing (is something there) Listing – arbitrary order  Duplicates Aren’t permitted Attempt to add – ignored Attempt to remove non existent data - ignored

4

5  Hash tables  Trees  Uses set interface > Hash SetTree Set

6  Create a Hash Set of Strings Set names = new HashSet ();  Adding and deleting names.add(“Romeo”); names.remove(“Juliet”);  Test to see if element is in set if (names.contains(“Juliet”);

7 Iterator iter=names.iterator(); while (iter.hasNext()) { String name = iter.next(); do something with the string ……… }

8 for (String name: names) { do something with names { Iterating through elements Does not visit in order inserted Set implementation rearranges for quick location Cannot add in iterator position Create a print method Should be usable by has or tree

9  Data type  Associates keys and values  A function from one set(key) to another set(value)  Every key has unique value  A value may have multiple keys  Two kinds of implementation Hash Map Tree Map Both implement Map Interface

10 Map favoriteColors = new HashMap<String, Color?(); Romeo Adam Eve Juliet Keys Values Green Red Pink

11  Add an association favorite.put(“Juliet”,Color.PINK);  Change a value favorite.put(“Juliet”,Color.RED);  Return the value Color julietFavoriteColor = favorite.get(“Juliet”); If you ask for a value with no key return a null  Remove key and value favorite.remove(“Juliet”);

12  Find all keys and values in map Set keySet = m.keySet(); For(String key: KeySet) { Color value=m.get(key); System.out.println(Key + “->” + value); }

13  Find elements in a data structure quickly  No linear search through all elements  Can implement sets and maps  Utilizes hash codes Function that computes an integer value from an object Integer value = has code Object class has a hashCode method  Int h = x.hashCode();  Collision – 2 objects with same hash code  Good has functions minimizes collision  Hash Code – index into hash table

14  Simplest form Array index to hash table In array insert each object @ location of its hash code If anything already in array – object is present

15 Eve Jim Joe [70068] [74478] [74656]

16 Problem with this idea  Not possible to allocate an array that is large enough to hold all possible integer index positions  Must reduce hash function to fit the array size int h = x.hashCode(); if (h<0) h = -h; position = h.%buckets.length;  This approach increases likely hood of collisions

17  Create a hash table that is implemented as an array of buckets.  Buckets are a sequence of nodes that hold elements with the same hash code. [65] [66] [67] [68] [69] [70] [71] [72] Harry Nina Susannah Sue Larry Adam Tony KatherineJuliet

18  Compute hash code Reduce to table size using modulo Produces index into hash table int h = x.hashCode(); if (h<0) h = -h; position = h.%buckets.length;  Iterate through the elements of the bucket at position h  Check for match

19  Depends on number of collisions or buckets  Few buckets – quick O(1)  Many buckets – much slower

20  From String int h = 0; for (int i=0; I < s.length(); i++) h = h+s.charAt(i);  What is the problem with this? Same hash code for permutations of same letters (eat tea)

21 final int HASH_MULTIPLIER = 31; Int h=0; for(int i=0;i<s.length();i++) h = HASH_MULTIPLIER*h+s.charAt(i); eat 31*(31*’e’ +’a’) + ‘t’ = 100184 31*(31*101+97) + 116 tea 31*(31*’t’ +’e’) + ‘a’ = 114704 31*(31*116+101) + 97

22  Example Coin class public class Coin { final int HASH_MULTIPLIER = 29; public int hashCode() { int h1 = name.hashCode(); int h2 – new Double(value.hashCode(); int h = HASH_MULTIPLIER*h1+h2; return h; }  In a hash map only the keys are hashed.


Download ppt "Chapter 16.  Data structures that take control of organizing elements  Elements not in fixed positions  Advantage – better performance Adding Removing."

Similar presentations


Ads by Google