package speiger.src.collections.PACKAGE.collections; #if !TYPE_OBJECT import java.util.Collection; #endif import java.util.AbstractCollection; #if !TYPE_OBJECT import speiger.src.collections.PACKAGE.utils.ITERATORS; #endif public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractCollection implements COLLECTION KEY_GENERIC_TYPE { @Override public abstract ITERATOR KEY_GENERIC_TYPE iterator(); #if !TYPE_OBJECT @Override @Deprecated public boolean add(CLASS_TYPE e) { return COLLECTION.super.add(e); } @Override public boolean addAll(COLLECTION c) { boolean modified = false; for(KEY_TYPE e : c) { modified |= add(e); } return modified; } @Override @Deprecated public boolean contains(Object e) { return COLLECTION.super.contains(e); } @Override public boolean contains(KEY_TYPE e) { for(KEY_TYPE entry : this) { if(entry == e) return true; } return false; } @Override public boolean containsAll(Collection c) { return c instanceof COLLECTION ? containsAll((COLLECTION)c) : super.containsAll(c); } @Override public boolean addAll(Collection c) { return c instanceof COLLECTION ? addAll((COLLECTION)c) : super.addAll(c); } @Override public boolean removeAll(Collection c) { return c instanceof COLLECTION ? removeAll((COLLECTION)c) : super.removeAll(c); } @Override public boolean retainAll(Collection c) { return c instanceof COLLECTION ? retainAll((COLLECTION)c) : super.retainAll(c); } @Override public boolean containsAll(COLLECTION c) { for(KEY_TYPE e : c) if(!contains(e)) return false; return true; } @Override public boolean containsAny(COLLECTION c) { for(KEY_TYPE e : c) if(contains(e)) return true; return false; } @Override @Deprecated public boolean remove(Object e) { return COLLECTION.super.remove(e); } @Override public boolean REMOVE_KEY(KEY_TYPE e) { for(ITERATOR iter = iterator();iter.hasNext();) { if(EQUALS(iter.NEXT(), e)) { iter.remove(); return true; } } return false; } @Override public boolean removeAll(COLLECTION c) { boolean modified = false; for(ITERATOR iter = iterator();iter.hasNext();) { if(c.contains(iter.NEXT())) { iter.remove(); modified = true; } } return modified; } @Override public boolean retainAll(COLLECTION c) { boolean modified = false; for(ITERATOR iter = iterator();iter.hasNext();) { if(!c.contains(iter.NEXT())) { iter.remove(); modified = true; } } return modified; } public KEY_TYPE[] TO_ARRAY() { return TO_ARRAY(new KEY_TYPE[size()]); } public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a) { if(a == null || a.length < size()) a = new KEY_TYPE[size()]; ITERATORS.unwrap(a, iterator()); return a; } #endif }