-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHashDataCounter.java
More file actions
65 lines (55 loc) · 2.1 KB
/
Copy pathHashDataCounter.java
File metadata and controls
65 lines (55 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.util.*;
public class HashDataCounter<E extends Comparable<E>,V> implements DataCounter<E,V> {
// AF : dizionario : E -> V;
// && forall data appartente a E dizionario.get(data)-> V tale che
// dizionario.get(data)=valore con valore != null
// IR : dizionario != null && forall i tc 0<= data_i <dizionario.size()
// dizionario.get(data_i)>0
private Hashtable<E,Integer> dizionario;
// metodo costruttore
public HashDataCounter() {
dizionario = new Hashtable<E,Integer>();
}
public void incCount(E data)throws NullPointerException{
int fal=0;
if(data == null)throw new NullPointerException();
fal= (dizionario.get(data)).intValue()+1;
dizionario.put(data,fal);
}
// REQUIRES: data != null
// MODIFIES: dizionario.get(data)
// THROWS: lancia NullPointerException (Unchecked) se data == null
// EFFECTS: incrementa dizionario.get(data);
public int getSize(){
return dizionario.size();
}
// EFFECTS: restituisce la dimensione del dominio E
public int getCount(E data)throws NullPointerException{
if(data == null)throw new NullPointerException();
if(dizionario.containsKey(data))return dizionario.get(data).intValue();
else return 0;
}
// REQUIRES: data!=null
// THROWS: lancia NullPointerException (Unchecked) se data == null
// EFFECTS: restituisce dizionario.get(data) se data è presente in
// dizionario altrimenti restituisce 0
public Iterator<E> getIterator(){
Iterator<E> itr = new HashIterator<E,Integer>(dizionario);
return itr;
}
// EFFECTS: resituisce un iteratore per la collezione
public void put(E data)throws NullPointerException{
if(data == null)throw new NullPointerException();
if(dizionario.containsKey(data))this.incCount(data);
else {
dizionario.put(data,1);
}
}
// REQUIRES: data != null
// THROWS: lancia NullpointerException se data == null
// (unchecked)
// MODIFIES: dizionario
// EFFECTS: se dizionario contiene data allora incremento
// dizionario.get(data) altrimenti aggiungo
// a dizionario data e do dizionario.get(data) = 1
}