Java tutorial
import java.io.Serializable; import java.util.AbstractSet; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.Set; public class ArraySet extends AbstractSet implements Cloneable, Serializable { private ArrayList list; public ArraySet() { list = new ArrayList(); } public ArraySet(Collection col) { list = new ArrayList(); // No need to check for dups if col is a set Iterator itor = col.iterator(); if (col instanceof Set) { while (itor.hasNext()) { list.add(itor.next()); } } else { while (itor.hasNext()) { add(itor.next()); } } } public Iterator iterator() { return list.iterator(); } public int size() { return list.size(); } public boolean add(Object element) { boolean modified; if (modified = !list.contains(element)) { list.add(element); } return modified; } public boolean remove(Object element) { return list.remove(element); } public boolean isEmpty() { return list.isEmpty(); } public boolean contains(Object element) { return list.contains(element); } public void clear() { list.clear(); } public Object clone() { try { ArraySet newSet = (ArraySet) super.clone(); newSet.list = (ArrayList) list.clone(); return newSet; } catch (CloneNotSupportedException e) { throw new InternalError(); } } public static void main(String args[]) { String elements[] = { "Java", "Source", "and", "Support", "." }; Set set = new ArraySet(Arrays.asList(elements)); Iterator iter = set.iterator(); while (iter.hasNext()) { System.out.println(iter.next()); } } }