Java Ordered Map

Em Java, existe um objeto que funciona como um mapa para armazenar e acessar pares de chave / valor, mas pode retornar uma lista ordenada de chaves e uma lista ordenada de valores, de modo que as listas de chaves e valores estejam na mesma ordem?

Então, como explicação por código, estou procurando algo que se comporte como meu OrderedMap fictício:

OrderedMap<Integer, String> om = new OrderedMap<>();
om.put(0, "Zero");
om.put(7, "Seven");

String o = om.get(7); // o is "Seven"
List<Integer> keys = om.getKeys();
List<String> values = om.getValues();

for(int i = 0; i < keys.size(); i++)
{
    Integer key = keys.get(i);
    String value = values.get(i);
    Assert(om.get(key) == value);
}

questionAnswers(8)

yourAnswerToTheQuestion