A próxima coleção é o Map. O Map guarda pares - Key, Value - de qualquer tipo de objeto. A key, como propõe o nome é uma chave e deve ser única em um Map. Portanto se você tentar incluir duas linhas com a mesma chave, o X++ irá guardar apenas uma linha, a última que foi incluída. O Map é semelhante ao Dictionary do .Net Framework e deve ser usada para acessos diretos à uma linha, como mostra a Listagem 2.
Listagem 2: Utilizando um Map
Map map = new Map(Types::String, Types::Date);
;
map.insert("João", str2date("10/01/2006", 1));
map.insert("José", str2date("20/10/2006", 1));
map.insert("Maria", str2date("5/8/2006", 1));
map.insert("Jonas", str2date("25/12/2006", 1));
if (map.exists("João"))
{
print map.lookup("João"); //Resultado: 10/1/2006
}
if (map.exists("Francisco"))
{
//Não executa, pois Francisco não está na lista
print map.lookup("Francisco");
}
Para buscar o valor em um Map através de sua chave, utiliza-se o método lookup(). Se a chave informada não existe no Map, o X++ emitirá uma exceção. Para evitar isto pode-se usar o método exists() para testar a existência da chave antes.