import java.util.*;

class G9_14 {

  public static void printCollection( Collection c ){
    for( Iterator it = c.iterator(); it.hasNext(); ){
       System.out.println( it.next() );
    }
  }
  
  public static void main( String[] args ){
    List list = new ArrayList();
    list.add("Cool");
    list.add("stuff");
    printCollection(list);

    Set set = new HashSet();
    set.add(new Integer(10));
    set.add("Heterogeneous");
    printCollection(set);
  }

}


class G9_naive {

  public static void printCollection( Collection<Object> c ){
    for( Object o: c ){
       System.out.println(o);
    }
  }
	
  public static void main( String[] args ){
    List<Object> list = new ArrayList<Object>();
    list.add("Cool");
    list.add("stuff");
    printCollection(list);

    Set<Object> set = new HashSet<Object>();
    set.add(new Integer(10));
    set.add("Heterogeneous");
    printCollection(set);

    List<String> sList = new ArrayList<String>();
    sList.add("Homogeneous");
    sList.add("list");
    // printCollection(sList);      // compilation error
  }

}


class G9 {

  public static void printCollection( Collection<?> c ){    // wildcard
    for( Object o: c ){
       System.out.println(o);
    }
  }
	
  public static void main( String[] args ){
    List<Object> list = new ArrayList<Object>();
    list.add("Cool");
    list.add("stuff");
    printCollection(list);

    Set<Object> set = new HashSet<Object>();
    set.add(new Integer(10));
    set.add("Heterogeneous");
    printCollection(set);

    List<String> sList = new ArrayList<String>();
    sList.add("Homogeneous");
    sList.add("list");
    printCollection(sList);      // List<String> <: Collection<?>
  }

}