package collection;
import java.util.*;

public class CollectionDemo {
    
    public static void main(String[] args) {
        //Collection c = new HashSet();
        Collection<String> c = new HashSet<String>();

        c.add("William");
        c.add("Andy");
        //c.add(55);
        c.add("Zac");
        c.add("Alvin");
        c.add("Alvin");
        c.add("Alvin");
        c.add("Albert");
        
        System.out.println(c);
        
        // Since both types are collections, we can do this:
        Collection<String> s = new HashSet<String>(c);
    
        System.out.println(s);        
        printCollection(filter(s));
        
        //String[] a = c.toArray(new String[0]);
        //System.out.println(a[1]);

    }
    
    public static void printCollection(Collection<?> collection){
        for (Object o : collection)
            System.out.println(o);
    }
    
    static Collection<String> filter(Collection<String> collection) {
        Collection<String> c = new ArrayList<String>(collection);
        for (Iterator<?> it = c.iterator(); it.hasNext(); )
            if (!cond((String)it.next()))
                it.remove();
        return c;
    }
    
    static boolean cond(String s){
        return s.startsWith("A");
    }
}
