¿Cuál es la mejor manera de obtener el valor mínimo y máximo de una lista de Comparables que contienen valores nulos?

Estoy pensando en algo como esto:

public static <T extends Comparable<T>> T minOf(T...ts){        
    SortedSet<T> set = new TreeSet<T>(Arrays.asList(ts));
    return set.first();
}

public static <T extends Comparable<T>> T maxOf(T...ts){
    SortedSet<T> set = new TreeSet<T>(Arrays.asList(ts));
    return set.last();
}

Pero no es nulo seguro, que es algo que también quiero.

¿Conoces una mejor manera de resolver este problema?

EDITAR:

Después de los comentarios, también probé min ():

public static <T extends Comparable<T>> T minOf(T...ts){        
    return Collections.min(Arrays.asList(ts), new Comparator<T>(){

        public int compare(T o1, T o2) {
            if(o1!=null && o2!=null){
                return o1.compareTo(o2);
            }else if(o1!=null){
                return 1;
            }else{
                return -1;  
            }
        }});
}

¿Qué piensas de eso?

Respuestas a la pregunta(3)

Su respuesta a la pregunta