-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHashSet_IteratorClass.java
More file actions
69 lines (57 loc) · 1.39 KB
/
HashSet_IteratorClass.java
File metadata and controls
69 lines (57 loc) · 1.39 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
66
67
68
69
/*
* Copyright Antonio Maulucci 2017 / http://www.antomau.com / License GPL 3.0
*/
private class StructIterator implements HashSetIterator
{
//variabili d'istanza
private Node current, previous;
private int bucket, previousBucket;
//costruttore
private StructIterator()
{
this.current = null;
this.previous = null;
this.bucket = -1;
this.previousBucket = -1;
}
@Override
public boolean hasNext()
{
if (current != null && currentre.link != null)
return true;
//il for andra' effettivamente da buckets[0] a buckets[end-1]
for (int i=bucket+1; i<buckets.length; i++)
if (buckets[i] != null)
return true;
return false;
}
@Override
public House next()
{
previous = current;
previousBucket = bucket;
if (current==null || current.link==null)
{
bucket++;
while (bucket<buckets.length && buckets[bucket]==null)
bucket++;
if (bucket!=buckets.length)
current = buckets[bucket];
else
throw new NoSuchElementException();
}
return current.house;
}
@Override
public void remove()
{
if (previous!=null && previous.link==current)
previous.link = current.link;
else if(previousBucket < bucket)
buckets[bucket] = current.link;
else
throw new NoSuchElementException();
current = previous;
bucket = previousBucket;
}
} //end of iterator's class