12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import java.util.ArrayList;
- import java.util.Iterator;
-
- class Tabell<E> implements AbstraktTabell<E> {
- private E[] arr;
- private int biggestIndex = 0;
-
- Tabell(int len) {
- arr = (E[])(new Object[len]);
- }
-
- public E hent(int index) {
- return arr[index];
- }
-
- public void leggTil(E val) {
- settInn(++biggestIndex, val);
- }
-
- public boolean settInn(int index, E val) {
- if (index > biggestIndex)
- biggestIndex = index;
-
- //Expand table automatically if necessary
- if (index >= arr.length) {
- int len = arr.length;
- while (len <= index)
- len *= 2;
-
- E[] nw = (E[])(new Object[len]);
- for (int i = 0; i < arr.length; ++i) {
- nw[i] = arr[i];
- }
- arr = nw;
- }
-
- try {
- arr[index] = val;
- } catch (Exception ex) {
- return false;
- }
- return true;
- }
-
- class ListIterator implements Iterator<E> {
- private int index = 0;
-
- public boolean hasNext() {
- return index < arr.length;
- }
-
- public E next() {
- E val = arr[index++];
-
- while (index < arr.length && arr[index] == null)
- index += 1;
-
- return val;
- }
-
- ListIterator() {
- while (index < arr.length && arr[index] == null)
- index += 1;
- }
- };
-
- public Iterator<E> iterator() {
- return new ListIterator();
- }
- }
|