/* 
 Output: 
 
[V, M, N] 
 
 
 
 
 * */ 
 
import java.io.Serializable; 
import java.util.AbstractSet; 
import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Iterator; 
import java.util.Set; 
 
public class MainClass { 
  public static void main(String args[]) { 
    Set map = new ArraySet(); 
    map.add("V"); 
    map.add("M"); 
    map.add("N"); 
    System.out.println(map); 
  } 
} 
 
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(); 
    } 
  } 
} 
 
            
       
  |