|         
 /* SimpleSet Copyright (C) 1998-2002 Jochen Hoenicke.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; see the file COPYING.LESSER.  If not, write to
 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 * $Id: SimpleSet.java.in,v 1.1.2.1 2002/05/28 17:34:24 hoenicke Exp $
 */
 
 import java.util.AbstractSet;
 import java.util.Iterator;
 
 public class SimpleSet extends AbstractSet implements Cloneable
 {
 Object[] elementObjects;
 int count = 0;
 
 public SimpleSet() {
 this(2);
 }
 
 public SimpleSet(int initialSize) {
 elementObjects = new Object[initialSize];
 }
 
 public int size() {
 return count;
 }
 
 public boolean add(Object element) {
 if (element == null)
 throw new NullPointerException();
 
 for (int i=0; i< count; i++) {
 if (element.equals(elementObjects[i]))
 return false;
 }
 
 if (count == elementObjects.length) {
 Object[] newArray = new Object[(count+1)*3/2];
 System.arraycopy(elementObjects,0,newArray,0,count);
 elementObjects = newArray;
 }
 elementObjects[count++] = element;
 return true;
 }
 
 public Object clone() {
 try {
 SimpleSet other = (SimpleSet) super.clone();
 other.elementObjects = (Object[]) elementObjects.clone();
 return other;
 } catch (CloneNotSupportedException ex) {
 
 }
 }
 
 public Iterator iterator() {
 return new Iterator() {
 int pos = 0;
 
 public boolean hasNext() {
 return pos < count;
 }
 
 public Object next() {
 return elementObjects[pos++];
 }
 
 public void remove() {
 if (pos < count)
 System.arraycopy(elementObjects, pos,
 elementObjects, pos-1, count - pos);
 count--;
 pos--;
 }
 };
 }
 }
 
 
 
 
 
 
 
 
 
 
 |