¿La mejor manera de ordenar un HashMap por clave en Java?

Esta es la primera vez que tengo que pedir unHashMap en Java Necesito hacerlo por clave, pero en mi caso la clave es un objeto, así que necesito ordenar por un campo específico. Tratando de resolverlo por mi cuenta, he considerado proceder con este simple rasguño de código:

private HashMap<SimpleDBField, String> sortTable(HashMap<SimpleDBField, String> row){

    LinkedHashMap<SimpleDBField, String> orderedRow = new LinkedHashMap<SimpleDBField, String>();

    for(int i = 1; i <= row.size(); i ++){
        Iterator iterator = row.entrySet().iterator();

        while(iterator.hasNext()){
            Map.Entry<SimpleDBField, String> entry = (Map.Entry<SimpleDBField, String>) iterator.next();

            if(entry.getKey().getListPosition()==i){
                orderedRow.put(entry.getKey(), entry.getValue());
                break;
            }
        }
    }

    return orderedRow;
}

Suponiendo que funciona y no me importa el rendimiento, antes de usarlo realmente, deseo saber si el próximo fragmento de código podría ser mejor y más importante: ¿por qué?

Ejemplo debajo de la fuente aquí:Cómo ordenar HashMap por clave y valor en Java

public static <K extends Comparable,V extends Comparable> Map<K,V> sortByKeys(Map<K,V> map){

    List<K> keys = new LinkedList<K>(map.keySet());

    Collections.sort(keys);

    Map<K,V> sortedMap = new LinkedHashMap<K,V>();

    for(K key: keys){
        sortedMap.put(key, map.get(key));

    }

    return sortedMap;
}

Si ambos están equivocados, ¿cómo debo hacer eso?

Respuestas a la pregunta(4)

Su respuesta a la pregunta