//TestElementOrderInSetsOfIntegers.java

import static java.lang.System.out;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class TestElementOrderInSetsOfIntegers
{
    public static void main(String[] args)
    {
        Integer[] numbers = { 321, 25, 4782, 6, 631 };

        Set<Integer> hashSet = new HashSet<Integer>();
        for (int i = 0; i < numbers.length; i++)
        {
            hashSet.add(numbers[i]);
        }
        out.println(hashSet);
        out.println(Collections.min(hashSet));
        out.println
        (
            Collections
            .min(hashSet, (a, b) -> Integer
                 .toString(a)
                 .compareTo(Integer.toString(b)))
        );
        out.println(Collections.max(hashSet));
        out.println
        (
            Collections
            .max(hashSet, (a, b) -> Integer
                 .toString(a)
                 .compareTo(Integer.toString(b)))
        );
        for (Integer s : hashSet)
        {
            out.print(s + " ");
        }
        out.println("\n");

        Set<Integer> treeSet = new TreeSet<Integer>(Arrays.asList(numbers));
        //Note that in the above line we cannot just use "numbers" by itself.
        //We could just do as we did above, with the following line:
        //for (int i=0; i<numbers.length; i++) treeSet.add(numbers[i]);
        out.println(treeSet);
        out.println(Collections.min(treeSet));
        out.println
        (
            Collections
            .min(treeSet, (a, b) -> Integer
                 .toString(a)
                 .compareTo(Integer.toString(b)))
        );
        out.println(Collections.max(treeSet));
        out.println
        (
            Collections
            .max(treeSet, (a, b) -> Integer
                 .toString(a)
                 .compareTo(Integer.toString(b)))
        );
        for (Integer s : treeSet)
        {
            out.print(s + " ");
        }
        out.println();
    }
}
/*  Output:
    [321, 6, 631, 25, 4782]
    6
    25
    4782
    631
    321 6 631 25 4782

    [6, 25, 321, 631, 4782]
    6
    25
    4782
    631
    6 25 321 631 4782
*/

