Enumeration Duvida?

Li um arquivo de propriedades

 Properties p = new Properties();
 p.load(new FileInputStream("colors.properties"));
 Enumeration e = p.elements();

E ao imprimir a listagem esta na ordem inversa.

Fui procurar o motivo e não encontrei nada falando sobre o assunto.

Achei um exemplo e mostrava o mesmo tipo de resultado

// en-Enum1.jsl
// Enumeration example

import java.util.*;

class MyClass
{
    public static void main(String[] args)
    {
        // Create a HashTable:
        Hashtable ht =  new Hashtable(); 

        // Add some elements:
        ht.put("1","Eve Kennedy");
        ht.put("2","Audrey Esteban");
        ht.put("5","Emma Esteban");

        // Enumerate over the values that were just added.
        Enumeration htEnum = ht.elements();
        while (htEnum.hasMoreElements())
        {
            System.out.println(htEnum.nextElement());
        }
    }
}

/*
Output:
Emma Esteban
Audrey Esteban
Eve Kennedy
*/

Ele usa algo como HASH ???

A classe java.util.Properties estende a classe Hashtable (o motivo de a classe ter estendido Hashtable em vez de usar Hashtable é questionável, mas é histórico e não será mudado).

Ou seja, se Hashtable muda a ordem das linhas lidas, Properties também muda a ordem. É pena - Properties poderia usar (em vez de estender) alguma classe que implementasse Map, e você poderia então usar uma implementação mais adequada, por exemplo “LinkedHashMap”, que conserva a ordem das linhas.

Entendi…

Obrigado