O Jedi das Collections

Salve Devs!

octobiwan

Depois de quase 2 anos sem postar, tive que voltar depois de descobrir a existência do GroovyCollections disponível desde a versão 2.2 do groovy!

Ok! esse título ficou meio OVER, mas foi exatamente a impressão que tive assim que dei uma boa lida no código-fonte desse cara.

Além do código estar muito bem organizado e documentado, na própria descrição do método tem os exemplos de utilização. Que aqui entre nós … Nem todo mundo manja dos paranauês dos algorítimos e sabe de có o que é um transpose por exemplo.

Pois bem… Chega de blá blá blá e show me the code!
Vou destacar aqui os três métodos que mais me chamaram a atenção:

  • subsequence;
  • combitations;
  • transpose;
  1. Subsequence
    Como o nome já diz, esse cara é responsável por retornar todas as subsequencias não nulas de uma lista:
    Ex:

    subsequences([1, 2, 3]) => [[1, 2, 3], [1, 3], [2, 3], [1, 2], [1], [2], [3]]
  2. Combinations
    Já este é responsável por retornar todas as cominações de uma determinada coleção:
    Ex:

    combinations([[true, false], [true, false]]) => [[true, true], [false, true], [true, false], [false, false]]</pre>
    combinations([['a', 'b'],[1, 2, 3]]) => [['a', 1], ['b', 1], ['a', 2], ['b', 2], ['a', 3], ['b', 3]]

    Digo mais, se passarmos como parâmetro um item que não seja uma lista ele considera como uma lista de um item só:
    Ex:

    combinations([[1, 2], 'x']) => [[1, 'x'], [2, 'x']] 
  3. Transpose
    Por fim, o transpose é o que nos retorna a transposição de um array de list. “?”
    Segundo o Wikipedia: Em matemática, matriz transposta é a matriz que se obtém da troca de linhas por colunas de uma dada matriz. Desta forma, transpor uma matriz é a operação que leva na obtenção de sua transposta.
    Ex:

    transpose([['a', 'b'], [1, 2]]) => [['a', 1], ['b', 2]]</pre>
    transpose([['a', 'b', 'c']]) => [['a'], ['b'], ['c']]

 

Conforme visto acima, o código fonte desta classe está no repositório do groovy-core no github;

Se você não quiser, não precisa futucar o código fonte, pois temos sua API;

Caso você goste de mais detalhes a webingenia tem uma documentação bem detalhada com os exemplos e gráficos;

Pontos negativos
Com certeza devem ter mais, mas um ponto negativo assim como boa parte das classes em java rsrs é que alguns métodos já estão depreciados.

Fiquem livres para comentar, criticar e divulgar.
Espero que tenham gostado e até o próximo post!

Anúncios

Um pensamento sobre “O Jedi das Collections

  1. […] Não sei se vocês lembram, mas em janeiro do ano passado eu escrevi sobre como as collections no groovy são poderosas. Dessa vez eu gostaria de falar um pouco mais sobre elas, já que tivemos algumas melhorias com o passar do tempo. Caso você não tenha lido ainda o último post sobre collections, essa é a sua chance rs. […]

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: