Artigo Java Magazine 74 - Google Collections
Saiba como as novas coleções desenvolvidas e utilizadas pelo Google podem tornar o desenvolvimento Java mais simples e eficiente.
Atenção: esse artigo tem um vídeo complementar. Clique e assista!
O artigo apresenta as coleções e utilitários introduzidos pela nova biblioteca desenvolvida pela Google, a Google Collections Library, utilizada em grandes projetos amplamente conhecidos nos dias atuais, como o GMail e o Google Reader.
Para que serve:
Com as novas coleções da Google Collections Library é possível que o desenvolvedor Java resolva diversos problemas comuns do dia-a-dia de forma simples e eficiente.
Em que situação o tema é útil:
A biblioteca pode ser útil nas situações em que é preciso criar coleções imutáveis, criar mapas com coleções como valor, criar sets que permitem valores repetidos, contar elementos iguais em uma coleção, filtrar elementos, transformar elementos, validar e ordenar coleções, buscar elementos em uma coleção, além de outras situações descritas no artigo.
Google Collections:
A Google Collections Library é uma biblioteca criada pela Google que oferece novas coleções e utilitários para facilitar e enriquecer a manipulação de coleções em Java. As novas coleções complementam e estendem as coleções que já fazem parte da linguagem Java, são 100% compatíveis com as interfaces especificadas no JDK e suportam generics. As principais coleções são: as coleções imutáveis, que oferecem performance e menos verbosidade que coleções não modificáveis; os Multisets, que são Sets que permitem elementos duplicados; e os Multimaps, que são Maps que possuem coleções como valor. Além disso, diversos métodos utilitários para realizar operações como filtragem, transformação, ordenação e buscas são oferecidos.
A Google Collections Library é uma biblioteca desenvolvida pela Google que oferece um conjunto de novos tipos de coleções, novas implementações e ferramentas que facilitam manipulá-las. Segundo seus autores, a biblioteca é amplamente utilizada em grandes projetos, como por exemplo, GMail, Blogger, Google Reader, Docs, AdWords, AdSense e dezenas de outros. A Google Collections é uma extensão natural do Java Collections Framework, que faz parte do Java Development Kit (JDK) e suporta Java 5 ou superior.
O Java Collections Framework foi desenvolvido em 1997 por Joshua Block, que atualmente trabalha para a Google, junto com os responsáveis pelo projeto Google Collections: Kevin Bourrillion e Jared Levy. Esse projeto está hospedado no Google Code (http://google-collections.googlecode.com) sob a licença Apache v 2.0.
A biblioteca ainda não alcançou sua versão final e no momento da escrita desse artigo está na versão Release Candidate 2, o que significa que pode sofrer pequenas alterações. É provável que quando você receber esta edição a versão final já tenha sido lançada.
Em virtude da necessidade de utilizar coleções mais poderosas do que as coleções do JDK em suas aplicações, a Google deu início ao desenvolvimento do projeto. O Apache Commons Collections é outro projeto que também foi desenvolvido por essa mesma necessidade, porém, segundo Kevin, a Google optou por desenvolver sua própria biblioteca devido ao fato das coleções da Apache não suportarem Generics e não respeitarem os contratos especificados pelas interfaces da JDK.
As coleções da Google oferecem uma série de novos recursos para tornar o desenvolvimento Java muito mais simples e eficiente, entre eles: Coleções Imutáveis, Multimaps, Multisets, Mapas de Diferença e métodos utilitários para instanciação, filtragem e transformação são exemplos de algumas das principais funcionalidades que analisaremos a seguir.
Coleções Imutáveis
Uma classe imutável é uma classe cujas instâncias não podem ser modificadas. Toda a informação das instâncias de classes imutáveis é inserida no momento da instanciação (ou seja, no construtor) e jamais são alteradas. Na API da linguagem Java temos diversos exemplos de classes imutáveis, por exemplo, String, Double, Float e BigDecimal. Para ilustrar melhor, se você criar uma variável x do tipo String com o valor “Java”, e depois atribuir o valor “Magazine” nesta mesma variável x, na verdade você instanciou dois objetos. A String “Java” jamais será alterada, e se não houver nenhuma outra referência para ela, ficará então disponível para ser limpa pelo Garbage Collector (GC). É exatamente por esta razão que em Java utilizam-se objetos StringBuilder e StringBuffer para concatenação de Strings. Perceba que não há método algum no objeto String que permita que seu valor seja modificado."
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo