01: package org.mvel.util;
02:
03: import java.util.AbstractSet;
04: import java.util.Iterator;
05:
06: public class FastSet extends AbstractSet {
07: Object[] elements;
08: private int size;
09:
10: public FastSet(int size) {
11: this .elements = new Object[size];
12: }
13:
14: public FastSet(Object[] elements) {
15: this .size = (this .elements = elements).length;
16: }
17:
18: public Iterator iterator() {
19: return new SetIterator(elements);
20: }
21:
22: public int size() {
23: return elements.length;
24: }
25:
26: public boolean add(Object o) {
27: elements[size++] = o;
28: return true;
29: }
30:
31: public static class SetIterator implements Iterator {
32: public SetIterator(Object[] elements) {
33: this .elements = elements;
34: }
35:
36: Object[] elements;
37: int cursor;
38:
39: public boolean hasNext() {
40: return cursor < elements.length;
41: }
42:
43: public Object next() {
44: return elements[cursor++];
45: }
46:
47: public void remove() {
48: throw new UnsupportedOperationException();
49: }
50: }
51:
52: public boolean equals(Object object) {
53: if (object instanceof FastSet) {
54: FastSet s = (FastSet) object;
55: if (size != s.size)
56: return false;
57: for (int i = 0; i < size; i++) {
58: if (!elements[i].equals(s.elements[i]))
59: return false;
60: }
61: return true;
62: }
63: return false;
64:
65: }
66: }
|