Skip to content

Commit 7c2f41f

Browse files
committed
Iterator and forEach in Heaps
1 parent da1c7d9 commit 7c2f41f

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

src/Heaps/Heap.java

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import java.util.ArrayList;
44
import java.util.Comparator;
5+
import java.util.Iterator;
6+
import java.util.function.Consumer;
57

6-
public class Heap<T extends Comparable<T>> {
8+
public class Heap<T extends Comparable<T>> implements Iterable<T> {
79

810
private ArrayList<T> list = new ArrayList<>();
911
private int index;
@@ -97,6 +99,14 @@ public boolean isEmpty() {
9799
return index == 0;
98100
}
99101

102+
public Object[] toArray() {
103+
Object[] arr = new Object[size()];
104+
for (int i = 1; i < size(); i++) {
105+
arr[i - 1] = list.get(i);
106+
}
107+
return arr;
108+
}
109+
100110
@Override
101111
public String toString() {
102112
StringBuilder ans = new StringBuilder("[");
@@ -108,4 +118,30 @@ public String toString() {
108118
ans.append(list.get(i));
109119
return ans.append("]").toString();
110120
}
121+
122+
@Override
123+
public void forEach(Consumer<? super T> c) {
124+
for (int i = 1; i < size(); i++) {
125+
c.accept(list.get(i));
126+
}
127+
}
128+
129+
@Override
130+
public Iterator<T> iterator() {
131+
return new HeapItr();
132+
}
133+
134+
private class HeapItr implements Iterator<T> {
135+
int cursor = 1;
136+
137+
@Override
138+
public boolean hasNext() {
139+
return cursor < Heap.this.size();
140+
}
141+
142+
@Override
143+
public T next() {
144+
return Heap.this.list.get(cursor++);
145+
}
146+
}
111147
}

0 commit comments

Comments
 (0)