import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

/**
 *
 * @author Mark Young (A00000000)
 */
public class SetClasses {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Set<String> treeSet = new TreeSet<>();
        Set<String> linkedHashSet = new LinkedHashSet<>();
        Set<String> hashSet = new HashSet<>();
        
        // introduce yourself
        System.out.println("I have created three Sets:");
        System.out.println(" - a TreeSet");
        System.out.println(" - a LinkedHashSet");
        System.out.println(" - a HashSet");
        System.out.println("Let's see what they do with their elements");
        System.out.println();

        // add items
        for (String item : List.of("S", "O", "M", "E")) {
            System.out.println("Adding \"" + item + "\" to all sets");
            treeSet.add(item);
            linkedHashSet.add(item);
            hashSet.add(item);
        }
        System.out.println();
        
        // show results
        System.out.println("Here is what the sets look like:");
        System.out.println(" - TreeSet:       " + treeSet);
        System.out.println(" - LinkedHashSet: " + linkedHashSet);
        System.out.println(" - HashSet:       " + hashSet);
        System.out.println();
        
        // add more items
        for (String item : List.of("M", "O", "R", "E")) {
            System.out.println("Adding \"" + item + "\" to all sets");
            treeSet.add(item);
            linkedHashSet.add(item);
            hashSet.add(item);
        }
        System.out.println();
        
        System.out.println("Here is what the sets look like now:");
        System.out.println(" - TreeSet:       " + treeSet);
        System.out.println(" - LinkedHashSet: " + linkedHashSet);
        System.out.println(" - HashSet:       " + hashSet);
        System.out.println();

        System.out.println("The TreeSet keeps things sorted");
        System.out.println("The LinkedHashSet keeps things "
                + "in the order they were entered");
        System.out.println("The HashSet keeps things ... mixed up?");
        System.out.println();
    }

}
