00001
00002
00003
00004
00005
00006
00007 package edu.tum.cs.util.datastruct;
00008
00009 import java.util.Collection;
00010 import java.util.HashSet;
00011 import java.util.Iterator;
00012 import java.util.Set;
00013 import java.util.Vector;
00014
00020 public class OrderedSet<E> implements Set<E> {
00021
00022 Vector<E> v = new Vector<E>();
00023 HashSet<E> s = new HashSet<E>();
00024
00025 public boolean add(E e) {
00026 if(s.contains(e))
00027 return false;
00028 v.add(e);
00029 s.add(e);
00030 return true;
00031 }
00032
00033 public boolean addAll(Collection<? extends E> c) {
00034 boolean changed = false;
00035 for(E e : c)
00036 changed = changed || add(e);
00037 return changed;
00038 }
00039
00040 public void clear() {
00041 v.clear();
00042 s.clear();
00043 }
00044
00045 public boolean contains(Object o) {
00046 return s.contains(o);
00047 }
00048
00049 public boolean containsAll(Collection<?> c) {
00050 for(Object e : c)
00051 if(!contains(e))
00052 return false;
00053 return true;
00054 }
00055
00056 public boolean isEmpty() {
00057 return v.isEmpty();
00058 }
00059
00060 public Iterator<E> iterator() {
00061 return v.iterator();
00062 }
00063
00064 public boolean remove(Object o) {
00065 if(s.remove(o)) {
00066 v.remove(o);
00067 return true;
00068 }
00069 return false;
00070 }
00071
00072 public boolean removeAll(Collection<?> c) {
00073 boolean removal = false;
00074 for(Object e : c)
00075 removal = removal || remove(e);
00076 return removal;
00077 }
00078
00079 public boolean retainAll(Collection<?> c) {
00080 throw new RuntimeException("Operation not supported");
00081 }
00082
00083 public int size() {
00084 return v.size();
00085 }
00086
00087 public Object[] toArray() {
00088 return v.toArray();
00089 }
00090
00091 public <T> T[] toArray(T[] a) {
00092 return v.toArray(a);
00093 }
00094
00095 }