Mega Code Archive

 
Categories / Java / Collections Data Structure
 

Custom ArraySet implementation (extends AbstractSet)

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());     }   } }