AX Dev Warehouse

Um blog dedicado ao desenvolvimento de soluções em Microsoft Dynamics AX
posts - 41, comments - 18, trackbacks - 0

Coleções do X++: Set

O Set é uma estrutura de dados que guarda coleções de itens distintos e ordernados. No primeiro exemplo é possível ver estas carcterísticas na prática. Apesar de receber três vezes a variável 100 o Set armazena somente uma. Além disto ao imprimir o Set é possível ver que ele ordenou os elementos, colocando o 10 a frente do 100.

    Set set;
    ;

    set = new Set(Types::Integer);

    set.add(1);
    set.add(100);
    set.add(100);
    set.add(100);
    set.add(10);

    print set.elements(); //3
    print set.toString(); //{1, 10, 100}

    pause;

Outra característica do Set é a possibilidade de excluir elementos da lista. No exemplo abaixo o elemento Types::String é excluido do Set 

    Set set;
    ;
    set = new Set(Types::Enum);

    set.add(Types::String);
    set.add(Types::Integer);
    set.add(Types::Date);

    print set.in(Types::String); //true

    set.remove(Types::String);
    print set.in(Types::String); //false

    pause;

 Por último é possível realizar operações de conjunto entre dois Sets. Isto é bem interessante, acho que não existe em .Net, por exemplo.

Operações de conjunto da coleção Set:

 

Vamos ver alguns exemplos de como isto funciona na prática

    Set produtos1 = new Set(Types::String);
    Set produtos2 = new Set(Types::String);
    ;

    produtos1.add("Pão");
    produtos1.add("Leite");
    produtos1.add("Manteiga");

    produtos2.add("Arroz");
    produtos2.add("Feijão");
    produtos2.add("Carne");
    produtos2.add("Pão");

    print Set::union(produtos1, produtos2).toString();
    //Resultado: {"Arroz", "Carne", "Feijão", "Leite", "Manteiga", "Pão"}

    print Set::intersection(produtos1, produtos2).toString();
    //Resultado: {"Pão"}

    print Set::difference(produtos1, produtos2).toString();
    //Resultado: {"Leite", "Manteiga"} 

    pause;

Print | posted on Friday, April 06, 2007 11:41 AM | Filed Under [ X++ ]

Powered by: