Sets, maps and hash tables
Long way to Ruzzle…2               Tecniche di programmazione   A.A. 2012/2013
SetsCollection that cannot contain duplicate elements.
Collection Family Tree4                 Tecniche di programmazione   A.A. 2012/2013
ArrayList vs. LinkedList                       ArrayList                        LinkedListadd(element)          IMMEDIATE ...
Collection Family Tree6                 Tecniche di programmazione   A.A. 2012/2013
Set interface       Add/remove elements           boolean add(element)           boolean remove(object)       Search  ...
Lists vs. Sets                    ArrayList              LinkedList                     Setadd(element)          O(1)     ...
Hash TablesA data structure implementing an associative array
Notation    A set stores keys    U – Universe of all possible keys    K – Set of keys actually stored                  ...
Hash Table    Devise a function to transform each key into an index    Use an array           K                         ...
Hash Function    Mapping from U to the slots of a hash table T[0…m–1]                       h : U  {0,1,…, m–1}    h(k)...
Hash Function - Complexity    Usually, h(k) = O(length(k))        length(k) « N  h(k) = O(1)    13                     ...
A simple hash function    h : A  N+  [0, m-1]    Split the key into its “component”, then sum their integer     repres...
A simple hash (problems)    Problems        hN(“NOTE”) = 78+79+84+69 = 310        hN(“TONE”) = 310        hN(“STOP”) =...
Collisions                                                                        0                  U        (universe of...
Collisions    Collisions are possible!    Multiple keys can hash to the same slot        Design hash functions such tha...
Hash functions    Simple uniform hashing    Hash value should be independent of any patterns that     might exist in the...
Natural numbers    An hash function may assume that the keys are natural     numbers    When they are not, have to “inte...
Natural numbers hashing    Division Method (compression)                        h(k) = k mod m    Pros        Fast, sin...
Natural numbers hashing    Multiplication Method I                  hR(k) = < k ∙ A > = (k ∙ A – k ∙ A)                ...
Natural numbers hashing    Multiplication Method II                          h(k) = k ∙ 2,654,435,761    Pros        Wo...
Resolution of collisions    Open Addressing        When collisions occur, use a systematic         (consistent) procedur...
Chaining                                                           0                         U        (universe of keys)  ...
Chaining                                                0                     U     (universe of keys)                    ...
Chaining (analysis)    Load factor α = n/m = average keys per slot        n – number of elements stored in the hash tabl...
Chaining (analysis)    Worst-case complexity:                (n) ( + time to compute h(k) )    27                       ...
Chaining (analysis)    Average depends on how h(∙) distributes keys among m     slots    Let assume        Any key is e...
A note on iterators    Collection extends Iterable    An Iterator is an object that enables you to traverse     through ...
Collection Family Tree30                Tecniche di programmazione   A.A. 2012/2013
HashSet    Add/remove elements        boolean add(element)        boolean remove(object)    Search        boolean con...
Collection Family Tree32                Tecniche di programmazione   A.A. 2012/2013
LinkedHashSet    Add/remove elements        boolean add(element)        boolean remove(object)    Search        boole...
Costructors    public HashSet()    public HashSet(Collection<? extends E> c)    HashSet(int initialCapacity)    HashSe...
Costructors    public HashSet()    public HashSet(Collection<? extends E> c)    HashSet(int initialCapacity)    HashSe...
JCF’s HashSet    Built-in hash function    Dynamic hash table resize    Smoothly handles collisions (chaining)    (1)...
Default hash function in Java    In Java every class must provide a hashCode() method     which digests the data stored i...
Understanding hash in Javapublic class MyData {   public String name;   public String surname;   int age;} 38             ...
Understanding hash in JavaMyData foo = new MyData();MyData bar = new MyData();if(foo.hashCode() == bar.hashCode()) {   Sys...
Understanding hash in JavaMyData foo = new MyData();MyData bar = new MyData();foo.name = "Stephane";foo.surname = "Hessel"...
Default hash function in Javapublic boolean equals(Object obj);public int hashCode();    If two objects are equal accordi...
Hash functions in Javapublic boolean equals(Object obj);public int hashCode();        hashCode() and equals() should      ...
public class MyDatapublic String name;public String surname;int age;public MyData() { }public MyData(String n, String s, i...
public class MyData@Overridepublic boolean equals(Object obj) {   if (obj == this) {      return true; // quite obvious ;-...
public class MyData@Overridepublic boolean equals(Object obj) {   if (obj == this) {       return true; // quite obvious ;...
public class MyData@Overridepublic int hashCode() {   String tmp = name+":"+surname;   return tmp.hashCode();}            ...
Implementing your own hash functions    Grab your hash function from a professional    47                       Tecniche ...
Trivial Hash FunctionThis hash function helps creating predictable collisions (e.g., “ape” and “pea”)public long TrivialHa...
BKDR Hash FunctionThis hash function comes from Brian Kernighan and Dennis Ritchies book"The C Programming Language". It i...
RS Hash FunctionA simple hash function from Robert Sedgwicks Algorithms in C bookpublic long RSHash(String str){   int b  ...
DJB Hash FunctionAn algorithm produced by Professor Daniel J. Bernstein and shown first to theworld on the usenet newsgrou...
JS Hash FunctionA bitwise hash function written by Justin Sobelpublic long JSHash(String str){   long hash = 1315423911;  ...
SDBM Hash FunctionThis is the algorithm of choice which is used in the open source SDBMproject. The hash function seems to...
DEK Hash FunctionAn algorithm proposed by Donald E. Knuth in The Art Of ComputerProgramming (Volume 3), under the topic of...
DJB Hash FunctionThe algorithm by Professor Daniel J. Bernstein (alternative take)public long DJBHash(String str){   long ...
PJW Hash FunctionThis hash algorithm is based on work by Peter J. Weinberger of AT&T BellLabs. The book Compilers (Princip...
PJW Hash Function[…]     for(int i = 0; i < str.length(); i++)      {         hash = (hash << OneEighth) + str.charAt(i); ...
ELF Hash FunctionSimilar to the PJW Hash function, but tweaked for 32-bit processors. Its thehash function widely used on ...
59   Tecniche di programmazione   A.A. 2012/2013
Mapsa.k.a, associative array, map, or dictionary
Definition    In computer science, an associative array, map, or     dictionary is an abstract data type composed of (key...
Java Collection Framework62               Tecniche di programmazione   A.A. 2012/2013
Collection Family Tree63                Tecniche di programmazione   A.A. 2012/2013
Map interface    Map<K,V>        K: the type of keys maintained by this map        V: the type of mapped values    Add...
Map interface              containsValue() will probably    Map<K,V>              require time linear in the map size    ...
Map interface (cont)    Nested Class        Map.Entry<K,V>        A map entry (key-value pair).    Set<Map.Entry<K,V>>...
Collection Family Tree67                Tecniche di programmazione   A.A. 2012/2013
LinkedHashMap    Maintains a doubly-linked list running through all of its     entries    This linked list defines the i...
Easter Wrap-up
Java Collection Framework70               Tecniche di programmazione   A.A. 2012/2013
71   Tecniche di programmazione   A.A. 2012/2013
Licenza d’uso    Queste diapositive sono distribuite con licenza Creative Commons     “Attribuzione - Non commerciale - C...
Upcoming SlideShare
Loading in...5
×

Sets, maps and hash tables (Java Collections)

1,565

Published on

Sets, maps and hash tables in the Java Collections framework

Teaching material for the course of "Tecniche di Programmazione" at Politecnico di Torino in year 2012/2013. More information: http://bit.ly/tecn-progr

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,565
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
75
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sets, maps and hash tables (Java Collections)

  1. 1. Sets, maps and hash tables
  2. 2. Long way to Ruzzle…2 Tecniche di programmazione A.A. 2012/2013
  3. 3. SetsCollection that cannot contain duplicate elements.
  4. 4. Collection Family Tree4 Tecniche di programmazione A.A. 2012/2013
  5. 5. ArrayList vs. LinkedList ArrayList LinkedListadd(element) IMMEDIATE IMMEDIATEremove(object) SLUGGISH IMMEDIATEget(index) IMMEDIATE SLUGGISHset(index, element) IMMEDIATE SLUGGISHadd(index, element) SLUGGISH SLUGGISHremove(index) SLUGGISH SLUGGISHcontains(object) SLUGGISH SLUGGISHindexOf(object) SLUGGISH SLUGGISH 5 Tecniche di programmazione A.A. 2012/2013
  6. 6. Collection Family Tree6 Tecniche di programmazione A.A. 2012/2013
  7. 7. Set interface Add/remove elements  boolean add(element)  boolean remove(object) Search  boolean contains(object) No positional Access! 7 Tecniche di programmazione A.A. 2012/2013
  8. 8. Lists vs. Sets ArrayList LinkedList Setadd(element) O(1) O(1) O(1)remove(object) O(n) + O(n) O(n) + O(1) O(1)get(index) O(1) O(n) n.a.set(index, elem) O(1) O(n) + O(1) n.a.add(index, elem) O(1) + O(n) O(n) + O(1) n.a.remove(index) O(n) O(n) + O(1) n.a.contains(object) O(n) O(n) O(1)indexOf(object) O(n) O(n) n.a. 8 Tecniche di programmazione A.A. 2012/2013
  9. 9. Hash TablesA data structure implementing an associative array
  10. 10. Notation A set stores keys U – Universe of all possible keys K – Set of keys actually stored U K 10 Tecniche di programmazione A.A. 2012/2013
  11. 11. Hash Table Devise a function to transform each key into an index Use an array K T[0..m] k h(∙) h(k) 11 Tecniche di programmazione A.A. 2012/2013
  12. 12. Hash Function Mapping from U to the slots of a hash table T[0…m–1] h : U  {0,1,…, m–1} h(k) is the “hash value” of key k “Any key should be equally likely to hash into any of the m slots, independent of where any other key hashes to” (Simple uniform hashing) Compression/expansion  h N : U  N+ h(k) = hN(k) mod m  hR : U  [0, 1[  R h(k) =  hR(k) ∙ m  12 Tecniche di programmazione A.A. 2012/2013
  13. 13. Hash Function - Complexity Usually, h(k) = O(length(k))  length(k) « N  h(k) = O(1) 13 Tecniche di programmazione A.A. 2012/2013
  14. 14. A simple hash function h : A  N+  [0, m-1] Split the key into its “component”, then sum their integer representation 𝑛 .hN 𝑘 = hN (𝑥0 𝑥1 𝑥2 … 𝑥 𝑛 ) = 𝑥𝑖 𝑖=0 h(k) = hN(k) % m 14 Tecniche di programmazione A.A. 2012/2013
  15. 15. A simple hash (problems) Problems  hN(“NOTE”) = 78+79+84+69 = 310  hN(“TONE”) = 310  hN(“STOP”) = 83+84+79+80 = 326  hN(“SPOT”) = 326 Problems (m = 173)  h(74,778) = 42  h(16,823) = 42  h(1,611,883) = 42 15 Tecniche di programmazione A.A. 2012/2013
  16. 16. Collisions 0 U (universe of keys) h(k1) h(k4) K k1 k4 (actual k2 collision h(k2)=h(k5) keys) k5 k3 h(k3) m–116 Tecniche di programmazione A.A. 2012/2013
  17. 17. Collisions Collisions are possible! Multiple keys can hash to the same slot  Design hash functions such that collisions are minimized But avoiding collisions is impossible.  Design collision-resolution techniques Search will cost Ө(n) time in the worst case However, all operations can be made to have an expected complexity of Ө(1). 17 Tecniche di programmazione A.A. 2012/2013
  18. 18. Hash functions Simple uniform hashing Hash value should be independent of any patterns that might exist in the data No funneling 18 Tecniche di programmazione A.A. 2012/2013
  19. 19. Natural numbers An hash function may assume that the keys are natural numbers When they are not, have to “interpret” them as natural numbers 19 Tecniche di programmazione A.A. 2012/2013
  20. 20. Natural numbers hashing Division Method (compression) h(k) = k mod m Pros  Fast, since requires just one division operation Cons  Have to avoid certain values of m Good choice for m (recipe)  Prime  Not “too close” to powers of 2  Not “too close” to powers of 10 20 Tecniche di programmazione A.A. 2012/2013
  21. 21. Natural numbers hashing Multiplication Method I hR(k) = < k ∙ A > = (k ∙ A – k ∙ A) h(k) =  m ∙ hR(k)  Pros  Value of m is not critical (typically m=2p) Cons  Value of A is critical Good choice for A (Donald Knuth) 5−1  A== 2 21 Tecniche di programmazione A.A. 2012/2013
  22. 22. Natural numbers hashing Multiplication Method II h(k) = k ∙ 2,654,435,761 Pros  Works well for addresses Caveat (Donald Knuth)  2,654,435,761 = 232 ∙  22 Tecniche di programmazione A.A. 2012/2013
  23. 23. Resolution of collisions Open Addressing  When collisions occur, use a systematic (consistent) procedure to store elements in free slots of the table  “Double hashing”, “linear probing”, … Chaining 0 k1 k4  Store all elements that hash to the same slot in a linked list k5 k2 k6 k7 k3 k8 m–1 23 Tecniche di programmazione A.A. 2012/2013
  24. 24. Chaining 0 U (universe of keys) h(k1)=h(k4) X k1 k4 K (actual k2 k6 X k5 h(k2)=h(k5)=h(k6) keys) k8 k7 k3 X h(k3)=h(k7) h(k8) m–124 Tecniche di programmazione A.A. 2012/2013
  25. 25. Chaining 0 U (universe of keys) k1 k4 k1 k4 K (actual k2 k6 keys) k5 k5 k2 k6 k8 k7 k3 k7 k3 k8 m–125 Tecniche di programmazione A.A. 2012/2013
  26. 26. Chaining (analysis) Load factor α = n/m = average keys per slot  n – number of elements stored in the hash table  m – number of slots 26 Tecniche di programmazione A.A. 2012/2013
  27. 27. Chaining (analysis) Worst-case complexity: (n) ( + time to compute h(k) ) 27 Tecniche di programmazione A.A. 2012/2013
  28. 28. Chaining (analysis) Average depends on how h(∙) distributes keys among m slots Let assume  Any key is equally likely to hash into any of the m slots  h(k) = O(1) Expected length of a linked list = load factor = α = n/m Search(x) = O(α) + O(1) ≈ O(1) 28 Tecniche di programmazione A.A. 2012/2013
  29. 29. A note on iterators Collection extends Iterable An Iterator is an object that enables you to traverse through a collection (and to remove elements from the collection selectively) You get an Iterator for a collection by calling its iterator() methodpublic interface Iterator<E> { boolean hasNext(); E next(); void remove(); //optional} 29 Tecniche di programmazione A.A. 2012/2013
  30. 30. Collection Family Tree30 Tecniche di programmazione A.A. 2012/2013
  31. 31. HashSet Add/remove elements  boolean add(element)  boolean remove(object) Search  boolean contains(object) No positional Access Unpredictable iteration order! 31 Tecniche di programmazione A.A. 2012/2013
  32. 32. Collection Family Tree32 Tecniche di programmazione A.A. 2012/2013
  33. 33. LinkedHashSet Add/remove elements  boolean add(element)  boolean remove(object) Search  boolean contains(object) No positional Access Predictable iteration order 33 Tecniche di programmazione A.A. 2012/2013
  34. 34. Costructors public HashSet() public HashSet(Collection<? extends E> c) HashSet(int initialCapacity) HashSet(int initialCapacity, float loadFactor) 34 Tecniche di programmazione A.A. 2012/2013
  35. 35. Costructors public HashSet() public HashSet(Collection<? extends E> c) HashSet(int initialCapacity) HashSet(int initialCapacity, float loadFactor) 75% 35 Tecniche di programmazione A.A. 2012/2013
  36. 36. JCF’s HashSet Built-in hash function Dynamic hash table resize Smoothly handles collisions (chaining) (1) operations (well, usually) Take it easy! 36 Tecniche di programmazione A.A. 2012/2013
  37. 37. Default hash function in Java In Java every class must provide a hashCode() method which digests the data stored in an instance of the class into a single 32-bit value In Java 1.2, Joshua Bloch implemented the java.lang.String hashCode() using a product sum over the entire text of the string 𝑛−1 ℎ 𝑠 = 𝑖=0 𝑠[𝑖] ∙ 31 𝑛−1−𝑖 But the basic Object’s hashCode() is implemented by converting the internal address of the object into an integer! 37 Tecniche di programmazione A.A. 2012/2013
  38. 38. Understanding hash in Javapublic class MyData { public String name; public String surname; int age;} 38 Tecniche di programmazione A.A. 2012/2013
  39. 39. Understanding hash in JavaMyData foo = new MyData();MyData bar = new MyData();if(foo.hashCode() == bar.hashCode()) { System.out.println("FLICK");} else { System.out.println("FLOCK");} 39 Tecniche di programmazione A.A. 2012/2013
  40. 40. Understanding hash in JavaMyData foo = new MyData();MyData bar = new MyData();foo.name = "Stephane";foo.surname = "Hessel";foo.age = 95;bar.name = "Stephane";bar.surname = "Hessel";bar.age = 95;if(foo.hashCode() == bar.hashCode()) { System.out.println("FLICK");} else { System.out.println("FLOCK");} 40 Tecniche di programmazione A.A. 2012/2013
  41. 41. Default hash function in Javapublic boolean equals(Object obj);public int hashCode(); If two objects are equal according to the equals() method, then hashCode() must produce the same result If two objects are not equal according to the equals() method, performances are better whether the hashCode() produces different results 41 Tecniche di programmazione A.A. 2012/2013
  42. 42. Hash functions in Javapublic boolean equals(Object obj);public int hashCode(); hashCode() and equals() should always be defined together 42 Tecniche di programmazione A.A. 2012/2013
  43. 43. public class MyDatapublic String name;public String surname;int age;public MyData() { }public MyData(String n, String s, int a) { name = n; surname = s; age = a;}[…] 43 Tecniche di programmazione A.A. 2012/2013
  44. 44. public class MyData@Overridepublic boolean equals(Object obj) { if (obj == this) { return true; // quite obvious ;-) } if (obj == null || obj instanceof MyData == false) { return false; // not even comparable } // the real check! if(name.equals(((MyData)obj).name) == false || surname.equals(((MyData)obj).surname) == false) { return false; } return true;}[…] 44 Tecniche di programmazione A.A. 2012/2013
  45. 45. public class MyData@Overridepublic boolean equals(Object obj) { if (obj == this) { return true; // quite obvious ;-) } if (obj == null || obj instanceof MyData == false) { The annotation @Override signals the compiler return false; // not even comparable } that overriding is expected, // the real has to fail if an override does not occur and that it check! if(name.equals(((MyData)obj).name) == false || surname.equals(((MyData)obj).surname) == false) { return false; } return true;}[…] 45 Tecniche di programmazione A.A. 2012/2013
  46. 46. public class MyData@Overridepublic int hashCode() { String tmp = name+":"+surname; return tmp.hashCode();} tmp will be “null:null” if MyData has not been initialized 46 Tecniche di programmazione A.A. 2012/2013
  47. 47. Implementing your own hash functions Grab your hash function from a professional 47 Tecniche di programmazione A.A. 2012/2013
  48. 48. Trivial Hash FunctionThis hash function helps creating predictable collisions (e.g., “ape” and “pea”)public long TrivialHash(String str){ long hash = 0; for(int i = 0; i < str.length(); i++) { hash = hash + str.charAt(i); } return hash;} 48 Tecniche di programmazione A.A. 2012/2013
  49. 49. BKDR Hash FunctionThis hash function comes from Brian Kernighan and Dennis Ritchies book"The C Programming Language". It is a simple hash function using a strange setof possible seeds which all constitute a pattern of 31....31...31 etc, it seems tobe very similar to the DJB hash function.public long BKDRHash(String str){ long seed = 131; // 31 131 1313 13131 131313 etc.. long hash = 0; for(int i = 0; i < str.length(); i++) { hash = (hash * seed) + str.charAt(i); } return hash;} 49 Tecniche di programmazione A.A. 2012/2013
  50. 50. RS Hash FunctionA simple hash function from Robert Sedgwicks Algorithms in C bookpublic long RSHash(String str){ int b = 378551; int a = 63689; long hash = 0; for(int i = 0; i < str.length(); i++) { hash = hash * a + str.charAt(i); a = a * b; } return hash;} 50 Tecniche di programmazione A.A. 2012/2013
  51. 51. DJB Hash FunctionAn algorithm produced by Professor Daniel J. Bernstein and shown first to theworld on the usenet newsgroup comp.lang.c. It is one of the most efficienthash functions ever publishedpublic long DJBHash(String str){ long hash = 5381; for(int i = 0; i < str.length(); i++) { hash = hash * 33 + str.charAt(i); } return hash;} 51 Tecniche di programmazione A.A. 2012/2013
  52. 52. JS Hash FunctionA bitwise hash function written by Justin Sobelpublic long JSHash(String str){ long hash = 1315423911; for(int i = 0; i < str.length(); i++) { hash ^= ((hash << 5) + str.charAt(i) + (hash >> 2)); } return hash;} 52 Tecniche di programmazione A.A. 2012/2013
  53. 53. SDBM Hash FunctionThis is the algorithm of choice which is used in the open source SDBMproject. The hash function seems to have a good over-all distribution for manydifferent data sets. It seems to work well in situations where there is a highvariance in the MSBs of the elements in a data set.public long SDBMHash(String str){ long hash = 0; for(int i = 0; i < str.length(); i++) { hash = str.charAt(i) + (hash << 6) + (hash << 16) - hash; } return hash;} 53 Tecniche di programmazione A.A. 2012/2013
  54. 54. DEK Hash FunctionAn algorithm proposed by Donald E. Knuth in The Art Of ComputerProgramming (Volume 3), under the topic of sorting and search chapter 6.4.public long DEKHash(String str){ long hash = str.length(); for(int i = 0; i < str.length(); i++) { hash = ((hash << 5) ^ (hash >> 27)) ^ str.charAt(i); } return hash;} 54 Tecniche di programmazione A.A. 2012/2013
  55. 55. DJB Hash FunctionThe algorithm by Professor Daniel J. Bernstein (alternative take)public long DJBHash(String str){ long hash = 5381; for(int i = 0; i < str.length(); i++) { hash = ((hash << 5) + hash) ^ str.charAt(i); } return hash;} 55 Tecniche di programmazione A.A. 2012/2013
  56. 56. PJW Hash FunctionThis hash algorithm is based on work by Peter J. Weinberger of AT&T BellLabs. The book Compilers (Principles, Techniques and Tools) by Aho, Sethi andUlman, recommends the use of hash functions that employ the hashingmethodology found in this particular algorithmpublic long PJWHash(String str){ long BitsInUnsigned = (long)(4 * 8); long ThreeQuarters = (long)((BitsInUnsigned *3) /4); long OneEighth = (long)(BitsInUnsigned / 8); long HighBits = (long)(0xFFFFFFFF) << (BitsInUnsigned - OneEighth); long hash = 0; long test = 0;[…] 56 Tecniche di programmazione A.A. 2012/2013
  57. 57. PJW Hash Function[…] for(int i = 0; i < str.length(); i++) { hash = (hash << OneEighth) + str.charAt(i); if((test = hash & HighBits) != 0) { hash = (( hash ^ (test >> ThreeQuarters)) & (~HighBits)); } } return hash;} 57 Tecniche di programmazione A.A. 2012/2013
  58. 58. ELF Hash FunctionSimilar to the PJW Hash function, but tweaked for 32-bit processors. Its thehash function widely used on most UNIX systemspublic long ELFHash(String str){ long hash = 0, x = 0; for(int i = 0; i < str.length(); i++) { hash = (hash << 4) + str.charAt(i); if((x = hash & 0xF0000000L) != 0) hash ^= (x >> 24); hash &= ~x; } return hash;} 58 Tecniche di programmazione A.A. 2012/2013
  59. 59. 59 Tecniche di programmazione A.A. 2012/2013
  60. 60. Mapsa.k.a, associative array, map, or dictionary
  61. 61. Definition In computer science, an associative array, map, or dictionary is an abstract data type composed of (key, value) pairs, such that each possible key appears at most once Native support in most modern languages (perl, python, ruby, go, …). E.g.,V1[42] = “h2g2”V2[“h2g2”] = 42 Implemented through hash tables 61 Tecniche di programmazione A.A. 2012/2013
  62. 62. Java Collection Framework62 Tecniche di programmazione A.A. 2012/2013
  63. 63. Collection Family Tree63 Tecniche di programmazione A.A. 2012/2013
  64. 64. Map interface Map<K,V>  K: the type of keys maintained by this map  V: the type of mapped values Add/remove elements  value put(key, value)  value remove(key) Search  boolean containsKey(key)  boolean containsValue(value) 64 Tecniche di programmazione A.A. 2012/2013
  65. 65. Map interface containsValue() will probably Map<K,V> require time linear in the map size  K: the type of keys maintained by this map for most implementations of the  V: the type of mapped values Map interface – ie. it is O(N) Add/remove elements  value put(key, value)  value remove(key) Search  boolean containsKey(key)  boolean containsValue(value) 65 Tecniche di programmazione A.A. 2012/2013
  66. 66. Map interface (cont) Nested Class  Map.Entry<K,V>  A map entry (key-value pair). Set<Map.Entry<K,V>> entrySet()  Returns a Set view of the mappings contained in this map Set<K> keySet()  Returns a Set view of the keys contained in this map Collection<V> values()  Returns a Collection view of the values contained in this map 66 Tecniche di programmazione A.A. 2012/2013
  67. 67. Collection Family Tree67 Tecniche di programmazione A.A. 2012/2013
  68. 68. LinkedHashMap Maintains a doubly-linked list running through all of its entries This linked list defines the iteration ordering (normally insertion-order) Insertion order is not affected if a key is re-inserted 68 Tecniche di programmazione A.A. 2012/2013
  69. 69. Easter Wrap-up
  70. 70. Java Collection Framework70 Tecniche di programmazione A.A. 2012/2013
  71. 71. 71 Tecniche di programmazione A.A. 2012/2013
  72. 72. Licenza d’uso Queste diapositive sono distribuite con licenza Creative Commons “Attribuzione - Non commerciale - Condividi allo stesso modo (CC BY-NC-SA)” Sei libero:  di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare questopera  di modificare questopera Alle seguenti condizioni:  Attribuzione — Devi attribuire la paternità dellopera agli autori originali e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi lopera.  Non commerciale — Non puoi usare questopera per fini commerciali.  Condividi allo stesso modo — Se alteri o trasformi questopera, o se la usi per crearne unaltra, puoi distribuire lopera risultante solo con una licenza identica o equivalente a questa. http://creativecommons.org/licenses/by-nc-sa/3.0/ 72 Tecniche di programmazione A.A. 2012/2013
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×